← All posts tagged программирование

Balancer
программирование глобальные_переменные Уже лет 20, как знаю, что глобальные и статические переменные — зло. И даже сиглетоны — зло в модной обёртке (сколько в Java с ними утечек памяти отлавливал, бывало...). Но временами поддаюсь искушению. И вот сейчас снова на эти грабли наступил... Потребовалось в PHP перейти от цикла «оживаем-генерируем страничку-умираем» к задаче «скриптом сгенерировать 300000 статических страниц» и полезли мелкие косяки, исправить которые — менять ряд древнейших решений на самом низком уровне библиотек и фреймворка... :-/
Balancer
программирование рейтинги языки популярность Топ-20 языков, на которых начинались новые проекты на GitHub в 2013-м и в репозитории которых было хотя бы пять коммитов:

1 JavaScript 199244
2 (ну указан) 181928
3 Java 109790
4 Ruby 93656
5 Python 87315
6 PHP 83102
7 CSS 52959
8 C++ 43332
9 C 41054
10 C# 26365
11 Shell 24387
12 Objective-C 23033
13 Perl 11670
14 CoffeeScript 8849
15 Go 7392
16 Scala 6682
17 Haskell 5066
18 R 4369
19 VimL 4317
20 Clojure 4295

// balancer.ru
~~~
Balancer
программирование оптимизация Авиабаза технические_детали Непонятно. Авиабаза последние пару-тройку недель тормозила. Ну, это понятно — Украина, все дела, онлайн до 350 человек одновременно при старой норме 200, количество хитов 150k в сутки вместо прежних 100k (это не считая десятков обращений к мелочи на показ каждой страницы) и т.п. И поверх всего многие десятки потоков активных поисковых ботов всех мастей.

top'ы/iotop'ы показывали, что основная нагрузка — mysql. Его я понемногу и допиливал/оптимизировал. Однако, хотя прогресс по разгрузке явно был, система всё равно тормозила. А сегодня ночью, проводя глубокое профилирование и переписывание генерации превьюшек (совсем для другого проекта) обнаружил в движке забавный баг — во множестве случаев данные по превьюшке не сохранялись в БД и поэтому при каждом запросе данных параметры читались с диска, а нередко превьюшки перегенерировались даже при наличии их на диске.

Исправил ошибки — и опаньки. Волшебны образом сайт залетал. Не знаю, как к вечеру будет, но сейчас онлайн 250 и всё работает шустро.

Что ещё непонятно — по загрузке машины по top/iotop/etc всё выглядит примерно по-прежнему. iowait не упал, в отчётах munin никаких «провалов» по загрузке. Всё выглядит примерно одинаково как при прежних тормозах, так и сейчас, без тормозов. Удивительное, блин, дело. Походу, кроме глубокого профилирования фиг поймёшь, что на самом деле тормозит...

Balancer
Perl программирование Сто лет на Perl'е не писал, а как понадобилось разгрепать кучу логов по сложной логике и стало понятно, что awk'а тут не хватит, как-то само собой начал писать на Perl'е. Интересно, почему не на Python? :) Рефлексы?
Balancer
программирование basic мемуары Всплыл в очередной раз тут на ЛОРе большой спор на тему языка, оптимального для начального программирования: linux.org.ru

Вспомнил я про то, как у нас народ, который начинал на первом курсе с Бейсика, потом практиковал программирование на нём много лет спустя. Даже сегодня есть знакомые, которые программируют на нём прикладные задача. А вот когда пару лет спустя учить стали Паскаль, то их прикладное программирование заканчивалось одновременно с прекращением обучения Паскалю. Кстати, из тех, кто учили Бейсик, в IT ушло чуть ли не половина народа. А вот из изучавших Паскаль — считанные единицы. Ну да ладно, это комментарий к теме. Вспомнил я просто потом забавную историю :)

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

Комп я починил, потыкался в установленный софт и наткнулся на совершенно чумовую программу на Бейсике. Дословно всю суть уже не вспомню, что в духе

10 INPUT "KOLVO LEGGINSOV", a
20 INPUT "KOLVO KURTOK", b
30 OPEN "tovary.dat" FOR INPUT AS #1
40 ...

В общем, народ даже не знал, как на русский переключиться. Но базу данных для учёта товаров на Бейсике написать осилил :D И это люди настолько далёкие не только от программирования, но от любых наук вообще, что странно было, нафига они вообще в институт поступили :D
Balancer
программирование алгоритмы деградация окружность Брезенхем Народ осуждает как нарисовать сглаженную окружность: «Сейчас рисую окружность так: беру квадрат со стороной 2r и внутри него каждую точку проверяю на вхождение в круг». Предлагают потом даже мультисемплингом это делать. Разбивать точки на субпиксели… 5 часов обсуждения, 16 ответов, даже пример страшного кода. Ни одного упоминания подстроки «Брезенхем». Я в унынии: linux.org.ru

Этих бы людей, да на восьмибитные машины с 2МГц процессором. Что же будет ещё через 20 лет? Камо грядеши? Это даже не определение расстояния на плоскости по сумме разностей координат. В последнем случае хоть ошибка вылезет и люди поймут, что не правы. А тут — «рисуется достаточно быстро»…
Balancer
PHP программирование извращения BORS Взял и запустил свой фреймворк на встроенном PHP-сервере :)
balancer.ru:8800
Работает! :D
Практическая польза — буду делать, наконец, юниттесты, не привязанные к внешнему web-серверу. Ну и, может, готовую демку в виде «распаковал, запустил, работает» слеплю…
~~~~
Balancer
программирование Android Без малого полгода спустя взялся за Eclipse снова :) Сегодня повесил поле ввода Форт-кода и поле для вывода результата. Работает. Разбираюсь с дизайном андроид-приложений. GUI-дизайнер в Eclipse просто ужасен. А на 17" мониторе и P4 работать вообще нереально. На Q6600 с 22" — уже нормально.
Balancer
программирование JavaScript докатился ненормальное Докатился. Чтобы сделать по-быстрому жене пару формочек для расчётов параметров ПЦР-реакций, использовал JavaScript :) А на чём ещё писать такое? VB под Linux нету, Gambas не делает бинарников, так что ничем не лучше JS в браузере, Delphi/Kylix — это совсем уже тяжёлый случай… Вроде, RAD нормальных больше и нет. Так что — страничка с калькулятором на JS :)
img810.imageshack.us
Бонус — файл валяется в общем каталоге на DropBox, я у себя его правлю, если что, у неё сразу исправленный вариант :)