понедельник, 12 ноября 2012 г.

Дети, интернет и все все все...

Ну чтож. Я пожалуй "с места в карьер".

Законы в нашей стране принимаются ну очень обдуманные. Гнев мой вызвал закон о черных списках интернета. Бедные детишечки видите ли увидят в интеренетах что нибудь оченно ужааасное что окончательно заблокирует их центральный нервный узел и не даст ему развиваться. И вырастают из таких исключительно дебилы-маньяки-педофилы и Муханкин и Чикатило в одном лице.

Интересно почему бы тогда не запретить к продаже и производству алкоголь и табак?? Ведь дети их тоже могут купить. И почему тогда в данном случае ограничивают именно детей а не всех остальных?

Свобода это в первую очередь ответственность. Возможность сделать выбор и полностью отвечать за него. Нельзя давать детям столько свободы. Ибо они ответственности не понимают и выбор сделать не могут. Биология такова что лобные доли человека которые которыми оный и вычисляет свой выбор развиваются окончателно довольно поздно. Именно поэтому у подростков такие проблемы в выборе.

Итого в сухом остатке:
Я призываю ограничивать именно детей в пользовании интернетом. Именно ограничивать а не защищать от него. И лозунгом выражающим саму суть данной мысли будет "Дети, вон из интернетов". Именно так. С ошибкой. Ежели кто из читающих согласится с мыслью моей - подпишите свои посты данным лозунгом. Это наш интернет и не гоже когда власть придержащие хотят его покалечить.

Интернет придумали взрослые и для взрослых.

"Дети, вон из интернетов"


З.Ы. идею лозунга подсказал друг. ;)

вторник, 12 июня 2012 г.

Впечатления от Gnome 3

Использовав некоторое время Gnome Shell сложилось у меня следующие ощущения.

Откровенно планшетный интерфейс, в случае ноутбука или стационарного компьютера все плохо. Но если не сильно пользоваться компьютером то жить можно.


Что смущает или не нравится
- чтоб добраться до кнопок быстрого запуска надо переключится в режим обзора или как он там называется

- динамически появляющиеся/исчезающие рабочие пространства, в них оч просто запутаться если пересключаться по хоткеям. 

Противоречит эргономике(в случае больших экранов).
- Меню. Оно сделано для того чтобы сразу увидеть все варианты,  а не листать его вверх вниз в поисках того что надо. В данном же случае все элементы размазанны по всему экрану и человек в принципе не может их обозреть. приходится переносить фокус внимания в поисках нужного элемента.

- переключение между обзором окон и меню приложений очень неакцентированно и его можно запросто пропустить.

Так что пойду я попробую пожить под Xfce.

воскресенье, 27 мая 2012 г.

Обновление до Mageia 2.

В свое время так легли звезды что после Slackware я стал пользоваться Mandriva. Ну и в последствии ушел на Mageia.

И вот вышла вторая версия этого дистрибутива. Значит надо обновлятся. Как вы уже догадались дальше пойдет описание проблем, иначе о чем же тогда писать?? Не диферамбы же петь в конце концов :)

Проблема первая.
Обновление не проходит. Гдето на первых 10-20% говорит о неудавшихся установочных транзакциях и баста. Думал диск криво записался, переписал - без изменений. В итоге обновление превращаетс в установку. К счастью переустановка линукса не "смертельна".

Проблема вторая.
Я использую Гном. Просто потому что он мне нравится больше(дада и большие кнопки и шрифты тоже нравятся).  Но политика партии такова что тут мне подсовывают 3ю версию этого ДЕ. А проблема это потому что все настройкии несколько неочевидно расположены и вообще управление шибко отличается от 2й версии. Спасло как ни странно прозвучит отсутствие драйверов на AMD видеокарту "искаропки".  Гном такого стерпеть не мог просто и переключился в fallback-mode. Дальше дело техники - полдня потратил на причесывание(поиск подходящей темы оформления и развешивание хоткеев и т.п.). В итоге сейчас чувствую себя вполне комфортно, почти. Очень нехватает апплетов. Ну привык я к мониторингу ресурсов, погоде и пр. Ну и почемуто для более мене удобной натройки гнума пришлось отдельно ставить dconf-editor и gnome-tweak-tools. И все равно темы не инсталируются как должны(как во второй версии) и приходится их руками ставить.. ну куда это годно???

Проблема третья. Самая паскудная.
Не взлетает WiFi. т.е. оборудование определяется(Atheros AR9285) и вроде даже работает но к сетке не цепляется. После относительно продолжительного гугления ответ нашел в багтрекере Mageia. Вот тут https://bugs.mageia.org/show_bug.cgi?id=5863

Тепрь поговорим о хорошем.
Флэш плагин адобовский и скайп теперь в репах. Ура!! Более того есть скайп библиотечка для пиджина! Хоткеи определяются проще и логичнее нежели во второй версии. В общем жить можно.

понедельник, 9 апреля 2012 г.

Такой ленивый clojure

Так получилось что работаю сейчас с этим lisp'образным языком. В подробности вдаваться не буду, лишь упомяну что есть в нем ленивые коллекции. Вещь хорошая и нужная. Только с закидонами если можно так сказать. Некоторые из них с наскоку мне решить не удалось. Приведу пример когда ленивые коллекции слишком ленивы.

(def sqn [1 2 3 4 5 6 7 8 9 0])

(defn l-a [prm]
(map #(* %1 2) prm))

(defn l-b [prm]
(map #(/ %1 2) prm))

(println (str "l-a-b " (l-b (l-a sqn))))

и приведенный в документации doall, предназначенный именно для таких случаев, вам так же не поможет. Технически, такое поведение я понимаю. Однако видимо из-за недостатка опыта случаются коллизии наподобие этой.

Будьте проще, используйте join!

суббота, 4 февраля 2012 г.

Python. Ползаем быстро.

Всем привет.
Не далее чем несколько дней назад я получил интереснейший опыт. Опыт по оптимизации программ на Python.

Случилось все примерно так. Была мной написана некая программа в задачи которой входила обработка данных. Если быть еще точнее - обработка логов. Все работало отменно пока не попались ей в зубы достаточно нетривиальные данные. Жевала их программа аж трое суток а прожевать не смогла.

В общем подобный антирекорд ни разу меня не порадовал. И решил я заставить змея ползать пошустрей. По результатам профилирования получалось что тонкое место - постоянное сканирование массива. Когда количество элементов возрастало до десятков тысяч то скорость одного прохода падала на 4е(!) порядка. После трех дней проб и ошибок, испытания разных идей и способов ускорения в сухом остатке следующее.

1) медленно работает именно поиск в массиве.
2) сравнение строк работает быстро(предварительное хеширование не ускоряет)
3) основная проблема скорости - алгоритм

Не буду томить. Ускорить удалось примерно в 800 раз. В результате то что программа не успела сделать примерно за трое суток теперь делает за 4-5 минут. Хотя код здорово усложнился для восприятия. Да что там говорить совсем потерял ясность. Вывод неутешительный. Код простой и эффективный не совместимы.

Основное ускорение получилось за счет индексирования доступа к элементам массива. В моем случае они были сложные так что сделать это было относительно не сложно.

В остальном затруднительно дать какой то конкретный совет. Просто помните что основная проблема - массивы в цикле. Ну и алгоритм. То что просто для человека сложно для машины.

В общем питон ползает быстро, просто не заставляйте его плутать в лабиринте человеческих мыслей.

пятница, 2 декабря 2011 г.

Змеиные секреты кофе.

Да да.. сегодня мы попытаемся подружить яву и питон через SSL. Точнее HTTP сервер у нас будет на питоне клиент на яве. Про детали написания того и другого я умолчу так как их достаточно на просторах интернета. А вот с SSL сертификатами все интереснее. Информацию приходится собирать по разным источникам. Почему? А потому что ява использует собственное хранилище ключей, а питону как-то пофиг на кофейные заморочки. И соответственно те кто пишут про такие темы как правило затрагивают только один язык.

В общем задача сводится к следующему. Нам надо сгенерировать SSL ключ и сертификат и скормить их питоновскому серверу. А сертификат еще и затолкать в ява хранилище ключей. Вообще невкусность этой ситуевины в некоторой неоднозначности. Keytool может создавать ява хранилища прям с сертификатами а питон с ним обращаться не умеет. А OpenSSL не умеет обращаться с ява хранилищами но умеет генерировать ключ/сертификат в виде понимаемом питонскими библиотеками. Ну еще добавляет некоторого разнообразия тот факт что OpenSSL может генерировать любые ключи, а яве надо х509.

Итак запомнив все это приступим. Для начала сгенерируем просто ключ/сертификат для питонского сервера.

Условимся с названиями файлов
server509k.pem - ключ
server509o.pem - сертификат

#openssl req -new -x509 -keyout server509k.pem -out server509o.pem -days 365 -nodes -passin stdin

Ну и после интуитивной беседы с данной утилитой получаем требуемое. По конкретике опций запуска есть ман и гугль

Теперь затолкаем сертификат в ява хранилище, которое носит гордое имя keystore.jks... ну или любое другое по желанию, но не менее гордое.

#keytool -importcert -keystore keystore.jks -validity 360 -file server509o.pem

Как вы уже поняли я не посмею лишить читателя удовольствия самому погуглить и покурить маны и даю только общие направление и рецепт который заработал для меня.

Ах да.. чуть не забыл. В коце диалога с кейтулом будет важный вопрос доверительный ли сертификат, в моем случае - да.

Trust this certificate? [no]: yes

После этого полученное хранилище можно скормить своему или не очень ява монстрику и он запросто начнет секретничать со змеиным сервером.

З.Ы. только не оставляйте их без присмотра.. а то малоли до чего эти мутанты договорятся.

вторник, 11 октября 2011 г.

Тонкости bash

Не могу не поделится рецептом так как решения "в лоб" я не нашел. Ситуация следующая. В скрипте нужно ненавязчиво проверить установленны ли переменные окружение и если не установлены то установить. При все простоте формулировке задача сложнее чем кажется т.к. например надо учитывать что ряд переменных содержат набор значений. Приветствуйте мой велосипед, он же "деликатный экспорт"

function softexport()
{
eval tmp_export_val=\$$1
if [[ $tmp_export_val == "" ]]
then
eval "export $1=$2"
else
if [ $(expr match $tmp_export_val $2) = 0 ]
then
eval "export $1=\$$1:$2"
fi
fi
}
вызывать соответственно например так
softexport LD_LIBRARY_PATH ${ORACLE_HOME}/lib

З.Ы. пишу скорее как памятку себе потому извините за отсутствие подробностей. Ежеели кому чего не понятно станет спрашивайте - отвечу.