Category: it

Category was added automatically. Read all entries about "it".

VR

про слова

Прогресс в IT очень замечательная штука. Она нам дал лёгкий доступ к порно и кучу новых слов смысл которых мало кто понимает, такие как нано-, AI, блокчейн, облачный. Но я так понимаю это просто времена такие. Современный nano-AI стартап основанный на технологии блокчейн в облаке вполне способен привлечь деньги инвесторов, даже если там интеллект присутствует только у уборщицы которая приходит два раза в неделю убрать опенспейс от разлитого смузи да крошек от маффинов. Ещё стоит определиться что же таки вкладывают в понятие интеллекта, просто потому что не у всякого биоробота он есть, а чего уж про железяку то говорить. И последнее. Во времена моего детства какие-то умные программы просто называли Экспертными Системами. Делали то они примерно то же что и сейчас, принимали какие-то решения на основании целого множества правил и не меньшего объёма входных данных, но звучит это конечно не так круто как Искуственный Интеллект.
VR

Криптография

У меня есть список проклятых областей в этом вашем айти которые никто не умеет, но экспертов там больше чем говна за баней. Первые две это UI/UX и глобализация/локализация. Теперь есть третья - криптография. Почему-то считается что достаточно взять хорошую проверенную библиотеку и всё, мы защищены, у нас всё секурно что даже мыши не пролезут. Ну и есть стандартные правила в духе "не использовать goto xor". На деле всё оказывается намного сложнее. Криптография, как и многие вещи связанные с безопасностью, это не про техническую часть. С технической то как раз всё просто: блочные алгоритмы строятся сетях Фейстеля с SP-блоками, криптография с открытым ключём ещё проще, возвёл в степень, поделил, взял остаток от деления, у меня дочка такое умеет считать, третий класс закончила. Ещё есть эллиптические кривые и поля Галуа, но подозреваю что там тоже матан уровня седьмого класса. Но в реальности криптография это больше про понимание происходящего: что ты делаешь, зачем ты это делаешь, как это делаешь. При этом нужно учитывать где это всё будет работать, что мы будем защищать, какой характер информации, какие возможные атаки и к чему приводит утечка, как обмениваться ключевой информацией и как дальше генерировать ключи, кому доверяем в цепочке, а кому нет и прочее, прочее, прочее. А алгоритмы... это один вызов функции из библиотеки, про это вообще можно не переживать :)

И про xor или сложение по модулю 2. Это один из лучших алгоритмов шифрования, если не самый лучший: простой, быстрый, легко реализуется в железе и работает с минимальными задержками, очень стойкий к взлому. ГОСТ 28147 использует его в режиме гаммирования, например. Но только при правильном применении: при применении одноразовых случайно генерируемых ключей достаточной длины (больше исходного сообщения). Т.е. сценарий примерно такой: Алиса и Боб (стандартные персонажи в крипто-играх) каким-то образом обмениваются ключевой информацией, скармливают её в генератор ключей (Key derivation function, KDF), генерят гамму нужной длины. Алиса, накладывает гамму на сообщение с помощью xor, полученный шифротекст передаёт Бобу. Он, в свою очередь, делает аналогичные действия и получает исходный открытый текст. Ева, которой удалось подслушать и перехватить шифротекст, ничего сделать не может. Но, как я уже сказал, криптография это больше про знания. Если Ева знает что-то о характере передаваемой информации, например что это текст на английском языке времён Шекспира, то шансы на взлом у неё становятся немножко больше. Так что пока не стоит выбрасывать aes256 с аутентификацией на базе сертификатов на помойку :)

PS Копировать алгоритмы и реализации с StackOverflow не стоит. Впрочем как и тыкать пальцами и высмеивать. Как я уже говорил, случаи разные бывает, а полную картину обычно не видно.
Zombie

Про фреймворки

Я кажется понял как можно быстро определить годный перед нами фреймворк или нет. Нужно просто посмотреть что они показывают на главной странице. Если там ад-заборы-коровники - значит перед нами хороший и зрелый фреймворк с помощью которого можно смело начинать писать очередную опердень. Например, DevExpress. У них на главной показан отчёт с кучей полей, гридом внутри которого суб-грид с тоталами и сабтоталами, всё это прибито к базе и скорее всего работает. Отчёт из какой-то опердени в чистом виде. Теперь возьмём какой-нить фреймворк для веба. В худшем случае будет спиской базвордов аля lightweight, html5, css3, в лучшем какой-то пример аля Hello World! или тикающий таймер. В принципе, это всё что можно делать на этих фреймворках, ибо при попытке сделать что-то более сложное - сразу начинается изобретение велосипедов, прикручивание костылей и борьба с внутренними тараканами, и всё это помноженное на бедность самого языка.
Zombie

Свежие веяния в этом вашем вебе - React

Сегодня поговорим об очередной штуке под названием React. Эта такая библиотека для построения web ui. В двух словах - она охуенна. А теперь собсна почему. Во-первых эта штука работает на уровне компонентов. Класс который вы создаёте - это компонент, кирпич для последующего использования внутри более сложного компонента. По сути это аналоги контролов из win forms или делфи. Конечно у опытного бойца при виде разметки в методах должно возникнуть чувство deja-vu, и это правильно, только к этой разметке стоит относиться как к дереву детей с такими же самыми компонентами. А то что внутри так похоже на html, это всего лишь случайное совпадение. Просто внутрянка представлена в декларативном виде, по аналогии с linq в c#, и это удобно. Второй момент - внутренняя магия: вы создаёте структуру, реакт её интегрирует в dom дерево. Если с jQuery это превращается в закат солнца вручную и последующий pain in the ass, то тут просто работает включая обновление и удаление. Третий момент - очень простая логика работы библиотеки. Есть состояние, есть отображение. Изменилось состояние, обновилось отображение. Вызвали setState, react вызовет render. Внути код вроде отторжения не вызывает, плюс знающие люди говорят что и без 100 грамм можно разобраться, это на случай если придётся патчить. Что ещё вам написать - не знаю. Я лично рекомендую попробовать (тем кто занимается вебом есно). Построение Rich Web UI она очень сильно упрощает, особенно если этот UI у вас динамичный и отстраивается на клиенте.
VR

Локализация

Сегодня отдельные личности нам говорят что разделителем целой и дробной части может быть только точка, а завтра их софт нам напишет что-то аля "Canonical provides critical updates for GIMP Image Editor until Апрель 2013." В винде правда аналогично. Но я понять не могу другого. Когда добавил русский в Language Support в убунте, она автомагически сгенерила две локали: ru_RU.UTF-8 и ru_UA.UTF-8. Почему не была сгенерена en_UA.UTF-8, что было бы логично, для меня загадка.
VR

FreeBSD + ZFS: ZPool migration

Есть у меня машинка под FreeBSD. Выполняет она роль домашнего сервера со всеми возможными и невозможными функциями. Пережила она уже много всяких переездов и апгрейдов, включая недавний переезд с ufs на zfs-root (вместе с ufs-boot, почитать о подробностях такого можно тут: Root on ZFS configuration with UFS /boot). Всё бы ничего, но вдруг в одном из страйпов забарахлил веник – начали сыпаться DMA timeout-ы, редко, но метко. На замену был куплен веник и появилась другая проблема: корректно перенести пока ещё живой zpool на другой веник. Заодно было решено отказаться от ufs-boot и перейти полностью на загрузку с zfs, благо фряха это позволяет с некотрых пор. В принципе документации на эту тему не то чтобы много, но что-то найти можно. Относительно zfsboot разные решения можно посмотреть здесь: ZFS boot on zfs mirror, Root on ZFS configuration (zfsboot), Setting up a zfs-only system.

Итак, исходные данные: два zpool-а построенные поверх gstripe: luna (system, 2x320, одна из которых сыпется) и tera (2x500). Переехать нужно будет на uranus (1TB, сюда переедет tera) и neptune (mirror, 2x500, на него переедет luna). При этом необходимо сохранить все свойства навешанные на файловые системы.

Этап первый, tera –> uranus.

Для этого пришлось написать небольшой скрипт. Работа достаточно проста: берём датасет из исходного пула, создаём аналогичный в приёмнике, переносим все нужные свойства и данные. Не переопределяются только mountpoint-ы, но в данном случае это было не смертельно, т.к. в данном случае dataset-ы не переопределяли точку монтирования. После переноса оставалось только поправить ссылки на новые mountpoint-ы и всё. Судя по ману всё подобную работу может сделать ключик –R у zfs send (если верить ману), но у меня было выпадение в корку где-то в дебрях libzfs и особо разбираться желания не было, проще было скрипт написать.

  1. #! /bin/sh
  2.  
  3. SRC=tera
  4. DST=uranus
  5.  
  6. ZFS=zfs
  7.  
  8. zfs list -H | grep "^$SRC" | while read line
  9. do
  10. SRCDSET=`echo $line | cut -f 1 -d ' '`
  11. SIZE=`echo $line | cut -f 2 -d ' ' | sed -E -e 's/(,[[:digit:]]+)//'`
  12.  
  13. echo Processing dataset $SRCDSET
  14. DSTDSET=`echo $SRCDSET | sed -E -e "s/^$SRC/$DST/"`
  15.  
  16. echo '==>' Creating dataset $DSTDSET
  17. $ZFS create $DSTDSET
  18.  
  19. echo '==>' Moving props
  20. zfs get -H all $SRCDSET | grep -E -v '(-|default|temporary)$' | grep -E -v 'inherited from' | while read prop
  21. do
  22. NAME=`echo $prop | cut -f 2 -d ' '`
  23. VALUE=`echo $prop | cut -f 3 -d ' '`
  24.  
  25. if [ "$NAME" = "mountpoint" ]
  26. then
  27. VALUE=`echo $VALUE | sed -E -e s/$SRC/$DST/`
  28. continue
  29. fi
  30.  
  31. echo '====>' Seting prop "$NAME" to "$VALUE"
  32. $ZFS set $NAME=$VALUE $DSTDSET
  33. done
  34.  
  35. echo '==>' Moving data
  36. echo '====>' Creating snapshot
  37. $ZFS snapshot $SRCDSET@migration
  38.  
  39. echo '====>' Copy data
  40. $ZFS send $SRCDSET@migration | pv -s $SIZE | $ZFS receive -F $DSTDSET
  41.  
  42. echo '====>' Cleanup
  43. $ZFS destroy $SRCDSET@migration
  44. $ZFS destroy $DSTDSET@migration
  45.  
  46. echo 'Done!'
  47. echo
  48. done



Этап второй, luna –> neptune, будет немного позже. Stay tuned.

VR

УкрТелеком - ОГО!

В двух словах - подключился, работает.

А теперь более подробно ;)

Подключение

Укртелеком предлагает всем желающим два варианта подключения - самостоятельное и с вызовом специалиста. Лично я смысла в вызове специалиста не вижу. Все необходимые действия можно сделать самостоятельно и при этом сэкономить $35. Для того чтобы подключиться самостоятельно необходимы следующие вещи:

  • паспорт и идент.код человека на которого зарегистрирован телефон. Тем кто живёт на съёмных квартирах следует выпинывать хозяев

  • 174грн на оплату подключения

  • телефон с возможностью подключения (проверять тут, собсна там же и можно оставить заявку, но это не обязательно)

  • ADSL модем с поддержкой Annex A (ADSL over POTS)

  • сплитер, если есть желание подключать в линию телефон


Вроде как всё из необходимого. Далее нам необходимо узнать адрес цеха который обслуживает вашу АТС. Идём сюда, вводим номер телефона и получаем всю необходимую информацию. Идём к ним в гости с документами и заключаем договор. Договор заключается в течении 20-30min (если вы раньше оставляли заявку, но об этом лучше сказать сразу). В результате вы получите квитанцию на оплату подключения и листик с логином/паролем. Крос на АТС сделают в течении следующего дня (при условии что этот день не выходной). Дома подключаем всё согластно мануала и настраиваем коннект.

Нюансы

Первая особенность - УкрТелеком не состоит в UA-IX. Поэтому с доступом к некоторым ресурсам будет туговато. О netassist думаю все знают. Их полезность в том, что они входят как в UA-IX, так и в UTC-IX, а ещё имеют пир на wnet. Вторая особенность - макс. длительность сессии - 23:59, тобишь почти сутки. Потом приходится переконекчиваться.

Модемы

У меня в наличии оказалось два модема:

Первый с линухом на борту и при желании можно найти оригинальную прошивку и собрать свою кастомную (чип TI AR7, сорцы можно найти где-то в дебрях ftp.dlink.com), сконектился на 600/60 Kbit/s ADSL 2+, у второго что-то непонятное, хотя я и не ковырял в эту сторону, поднял линию на 2500/600 Kbit/s ADSL. В общем смотрите чтобы поднятый линк был не меньше ограничений на ТП. Если будете покупать новый модем и при этом слово 'linux' не вгоняет вас в ступор, то советую для начала полистать OpenWRT Table of Hardware и выбирать что-то из поддерживаемого. Как результат - можно построить полноценный роутер с dns/nat/fw/bgp/pptp/etc на борту.

Вроде как всё. Если есть вопросы - спрашивайте. ;)
  • Current Music
    Давид Тухманов - Песня Студента
  • Tags
    , ,
VR

qemu

Пытался вчера в очередной раз запустить сапш. Попытка опять провалилась. qemu запускается, появляется его консоль и потом зависает. Ключик -S (freeze CPU at startup) тоже не помогает, зависает сам монитор. Ых. Опять безсонные ночи с дебагером. Прийдётся отложить знакомство с керберосом и лдапом до лучших времён, машинки для этого нету.
  • Current Mood
    sleepy сонное
  • Tags
VR

FreeBSD: мысли о current

Предыдущий апдейт родил у меня в голове мысль: "Неужели". Неужели фряху поломали. Оказалось что я был не прав. Её не поломали, её сделали лучше. Причина всему - новый malloc. Дело в том что -CURRENT это некий полигон для испытаний. И вот мы получили новый переписаный malloc, который должен работать быстрее в многопоточном/многопроцессорном окружении. Но почему часть софта поламалась? Немного полистав рассылку freebsd-current я понял: redzones.

Дело в том что сейчас malloc добавляет в перед и после области памяти свои кусочки, т.н. redzone. Благодаря этому он может отслеживать переполнение буфера. Если зоны повреждены - значит kill программе без раздумий. Есно что это можно отключить, но зачем, если кривой софт можно убивать ещё в зародыше.

Как результат всего первым отпал Xorg. Заменил его на -snap, замечательно. Дальше отпал aterm. Причина - libAfterImage. Отключил в нём прозрачность и пока доволен. Немного дальше - tin. Багу нашёл и исправил, сейчас буду писать мыло разрабам и коммитерам, пусть добавляют.

Вот такие пироги с котятами. Но чтобы не говорили, но это круто ;)

PS Патч для тина Collapse )