О непридании корпорациям государственного статуса

November 1, 2009 by peter631

Преамбула

Помню некий древний фильм смотрел. С МакДауэлом в главной роли. Там в некотором постапокалиптическом мире одна могущественная корпорация заявляется на государственный статус. По сути дела, мы сейчас – особенно Америка – как никогда к этому близки.

Status in state

Корпорации работают над государственными проектами;  корпорации обладают огромными финансами, связями и влиянием на политику. (землицы бы еще да крепостных).  Подданные корпорации куда больше верны им, чем государству – ведь государство отбирает у них деньги, а корпорация дает. Охрана корпораций напоминает армию как по форме, так и по содержанию, разница лишь в численности. Свои юристы. Своя медицинская служба. Своя информационная разведка.  На корпорацию работают умнейшие и лучшие из людей.  Де-факто, корпорация – это государство в государстве. Но это тоталитарное государство, по сути дела – глубокое прошлое человечества. За пределами корпорации мы можем играть в демократию. Внутри корпорации – изволь подчиняться местному царю…Особенно печальная картина в Японии. Там найм пожизненный. По сути дела, в Японии уже сейчас – так.

Бог не выдаст, ООН не съест

Не дай бог, все это дерьмо получит официальную озвучку. Завтра Sony попросит предоставить ей государственный статус, а ООН возьмет и подпишет им такую бумагу. Не за так, конечно. Например, Sony получает контроль над Палестиной и Израилем, типа для урегулирования конфликта. Конфликт урегулируется, но местные жители поголовно становяться поддаными Sony.  Будет ли местным лучше? Сомнительно.  Скорее, местных по-быстрому скосит небольшая эпидемия, а взамен туда придут жить совершенно другие люди.  Одно дело – виртуальное государство, куда ты зашел и вышел. Другое дело – пожизненный контракт и чип под кожей. Если все вокруг – и земля, и деньги, и работа – все принадлежит копорации, то выхода нет. Это уже рабство.

Вижу ложь, облеченную в другую ложь

Мелкий бизнес – это фикция. Даже если ты содержишь клининговую компанию, сортиры моешь, порошочек-то делает для тебя корпорация…А порошочка-то тебе много надо…У тебя и контрактик на закупку подписан… По сути дела ты – ее вечный подданный.  Если ты пишешь программки на заказ, все здорово, только вот компилятор-то, браток, у тебя корпоративный (либо честно – MS, либо косвенно – GNU, а чьи уши сине-белые в полосочку там торчат?  IBM, сэр!).

Дальше – только хуже

Выглядит все здорово. Ты студент. Третий курс. Наша компания, сэр, имеет честь предложить Вам работу. Вот небольшой контрактик подпишите – работаете сейчас и еще три года. Да, страховка есть. Гарантия трудоустройства! Не хотите? Право, нам так жаль…Мы слышали, у вас проблемы с учебой наметились…Мы можем их решить. Или не решить. Выбирайте…

А что делать?

Скручивать башку особо паскудным. На периодической основе. Вот как Обама сейчас открутил башку страховщикам и банкирам.  Место, сволочи! Место!

 

Оборона 22-го центра

October 31, 2009 by peter631

Вступление.

Мне сняться странные сны. Доктор велит их записывать.  Я записываю.

День войны

Я плохо помню этот день, но я уверен – того, что удержала моя память, мне уже не забыть никогда….

У меня нет имени – только номер. 631.  Я клон. Когда-то давно,  в далекие времена жил один человек, у него были родители, друзья, детство. Он обладал разносторонним мышлением. Он прожил счастливую жизнь и умер. Его ДНК сохранилась. Спустя много лет его клонировали. Так получились МЫ.  Наша группа – с 630-го по 650 – военные ученые. Мы исследуем технологии Чужих. Наш дом – 22-й Исследовательский Центр на краю Территории Людей.

Третья смена всегда такая долгая.  Я углублен в работу. Шепот Системы: “Акустическая станция:  фиксирую воздушное перемещение габаритного объекта. Ожидаемое время контакта – одна минута.”  В углу экрана – красное окно: “Тревога, нападение противника”.

“К оружию!”- орет 630, он у нас за командира. Все быстро-быстро.  Плащ (защищает от легкого оружия). Очки (оружие, карта, коммуникации). “631-й, ракеты!”. Ракетница. 4 единицы. Наверх. Наверх.

“Четыре киборгизированные особи противника”, шепчет Cистема. “Тяжелое лучевое оружие. Ракетная установка”.

Солнце слепит глаза. Больно.   На фоне голубого неба – внезапно – десантная машина Чужих.  Могнул – она уже у земли.

“Луч!!!” – орет командир. Марево в воздухе. Мне становиться страшно и неуютно. Этого не рассказать – кто воевал, меня поймет.

632-й зажегся красным на карте. Плохо.

“Беречь эмиттер!” -командир. Наша последняя надежда – эмиттер. Он разрушает защиту чужих, и мы можем поразить их нашим оружием. Вон он -  ажурная конструкция над нашим куполом. Мы свистнули эмиттер у Чужих и разобрались. Это дало нам значительные шансы в войне.

Чужак пускает ракету. Целит в эмиттер…Тут я включаюсь в игру. Пускаю ракету-перехватчик.  Прицел – захват – пуск. Вспышка в воздухе, ярчайшая вспышка. Оптика резко темнеет. Недостаточно резко.В глазах пятна и круги.

“Пехота!” бормочет Система. 4 Особи.  Ксеношок. Желудок стремиться вывернуться наизнанку.  Чужие в броне, но все равно выглядят омерзительно. Умом ты понимаешь, разбираешь их амуницию – вот оружие, экзоскелет, батарея, броня, жизнеобеспечение, но все вместе это кажется отвратным. Чуждым. Нечеловеческим. Это глумление над эстетикой, это поруганная гармония.

Дальнейшее я помню плохо. Мы дрались. Меняли позиции, снова дрались. Это длилось вечность. Нас осталось пять человек. Мы победили. Они проиграли.  Отбой. Отдых. Вернуться к исследованиям. Инициировать клонов взамен убитых.  Война окончена – до следующего раза.

Комментарий

А мы точно курили “Мальборо”? Один мой друг тоже часто видит такие сны.  Наверно, чем сильнее интеллект, тем выше шансы что-то там прочесть откуда-то…

Быстро летит время

October 25, 2009 by peter631

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

Чтож я могу поделать, дорогие мои? Я и правда на них программировал. Это было вчера, 20 лет назад.

Компьютерная безопасность – это обман

October 25, 2009 by peter631

Компьютерная безопасность, особенно коммерческая – это сплошное надувательство.  Просто поразительно, каких здоровенных слонов господа секрьюрити-писатели умудрились проебать (извиняюсь, но другого слова нет) - http://www.securitylab.ru/analytics/386285.php

SSL вроде как призван защищать компьютеры и соединения, а не служить источником уязвимостей. Очевидно, плохие ребята знают про эту хрень давно и давно ее эксплуатируют. Защищались-защищались. Покупали сертифицированную криптохрень…На тебе…

Юзать open-source выходит не так накладно – ничего не платишь, похакали, так и не обидно…

Скоро доживем до того, что в Сеть носа будет высунуть нельзя без того, чтоб тебя кто-нибудь не отымел…

Мда. Что день грядущий нам готовит?

А не стать ли мне чиновником?

September 26, 2009 by peter631

А что? Это идея! Деньги платят, а делать ничего не надо. Я как-то, по служебной надобности, побывал у господ чиновников. Отличное, комфортное здание, со вкусом одетые люди, степенно с папочками шествуют по зданию. Никакой суеты, все чинно.  Я, грешным делом, так им тогда позавидовал…

(И систему  для них писали обстоятельную,  без упущения деталей. Могучая СУБД,  профессиональная серверная платформа, защита по высшему гражданскому классу. Тщательное и долгое тестирование, доработки.  Работала надежно и долго, до отмены какой-то там директивы…)

Костюм себе куплю.  Кредит возьму небибический в солидном  банке. В отпуск съезжу. Куда-нибудь, где почище.  Пущай меня отправят на курсы государственных чиновников, где я узнаю как:

  • безопасно брать взятки
  • политика откатов в РФ
  • как заводить и поддерживать связи

Много нового. Некоторым людям везет, они становятся чиновниками сразу же. Некоторым – нет, они становятся ими в среднем возрасте. Кому-то не везет вообще.

Надо принять законодательный акт, защищающий чиновников от произвола МВД, с одной стороны, с другой – табелю о рангах. Соответственно, взятки чтобы все брали “по чину”. Одно дело – подкупить лейтенанта, а другое – дело генерала.  В совдепии за этим ОБХСС наблюдало, а теперь кто?

Откаты, опять же. Надо брать с них налоги.

Результативность

September 26, 2009 by peter631

Результативность – это свойство программиста (администратора) достигать поставленных целей. Зависит от многих факторов. В большинстве случаев – дар свыше. Единственный фактор, за который ценят в любом случае. Если ничего не знаешь, но результативен – все OK. Как потерял результативность – значит, завязывай.

Из результативных программеров можно сделать отличную команду, если специализация различается. Например – визуальщик и начинщик. Если специализации естесвенно дополняют друг друга. Для таких команд не существует преград.

Современные хокку-2

September 26, 2009 by peter631

Потерял работу

Но нашел себя

Старость

Успешная жизнь проекта, или кодовая база успеха

September 17, 2009 by peter631

О чем речь?

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

Принципы успешного проекта

Успеха можно достичь только тогда, когда все изменения идут “в плюс”.  Вы интуитивно почувствуете это. Когда вместо того, чтобы становиться все более ненадежной и запутанной, конструкция становиться все более легкой и мощной; это непросто, но достижимо.  Однажды я достиг такой ситуации с одним проектом, и теперь хочу рассказать об этом.   Я придерживался определенных принципов при написании кода, и, похоже, они сработали. Вот эти принципы:

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

Статическая типизация

Компилятор – Ваш друг. Статическая типизация – рулез. Статическая дает гарантии. Гарантии чего? Быстрого обнаружения ошибки, причем в больишнстве случаев – на стадии компиляции. Рулезность этого можно прочувствовать только тогда, когда попрограммируешь на Лиспе, Эрланге и пр. языках с динамической типизацией. Малейшая ошибка – и привет, ищи, где ты там поле не того типа передал…Кто как, а я очень неуверенно себя чувствую. Для больших проектов сакс, имхо. Для больших проектов нужны твердые гарантии. Гарантии – вот что нам нужно.

“Дикая” многопоточность

Начинающие программисты, ощущая собственную крутизну, наворачивают в коде десятки потоков. Разумеется, такой код в свою очередь, очень часто “наворачивается” с корами. Запрограммировать потоки правильно можно двумя способами:

  • построить приложение, в котором потоки на 100% не взаимодействуют друг с другом (например-принадлежат разным подпроцессам) . Сделать поток атрибутом кода;
  • придерживаться идеом взаимодействия.

Если с первым случаем все ясно, то второй требует пояснения. Что есть идеома? Это шаблон, правило, метода. Например “процессы и сообщения”.  Или “потоко-безопасные переменные”. Или “пул потоков”.  Этот путь затратный. Вы должны сконструировать имплементацию идеомы, доказать ее правильность и корректность реализации, и уж после того использовать. В моем случае была идеома “Потоко-безопасные переменные”. Пришлось очень и очень постараться, пока я все сделал как надо. (Примечание : Я видел десятки программеров, которые мучаются с многопоточными приложениями (ой, надо подебажиться, что-то там где-то не туда залезло). Не стоит терять время – используйте идеомы.)

“Дикие” сетевые соединения

Я и все мы нисколько не сомневаемся в Вашей программерской крутизне. Честное слово. Но дело не в этом. Дело в подводных камнях, которые в изобилии торчат по ходу проекта. Сетевое взаимодействие – штука сложная. Попробуйте избежать ручного программирования сокетов. Если все же не получается, потратьте время на изучение поведения TCP/IP, сокетов, коннектов-дисконнектов, поведении при обрывах и пр.

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

Используйте стандартные протоколы, даже если Вы пишете по сокетам сами.  Если протокол простой – используйте текстовые строки с разделителем. Если данных много или критично быстродействие – используйте бинарный протокол с заголовком (опять-таки тоже соображение, что и в предыдущем абзаце). Используйте HTTP – будете приятно удивлены, когда надо будет передавать Ваши данные через proxy.

Проверяйте u-тестами все куски кода

Пишите юнит-тесты. Пишите ИЗ юнит тестов, пишите тесты ДО кода. Идеальный код = мультипоточные идеомы  + код, на 100% охваченный тестами. Некоторые языки, например Erlang, вообще навязывают такого рода модель. Все модули, классы, подпрограммы, которые можно пройти в отладчике, и которые не зависят от взаимодействия потоков – должны быть охвачены тестами. Следите за тестами, не дайте им устаревать.

Периодически просматривайте старый код

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

Непрерывно улучшайте код

Думайте над кодом. Думайте над кодом. Думайте над кодом. Улучшайте. Созидайте новые абстракции и разрушайте отжившие. Таков закон жизни. Закон природы. Меняйте реализации на более эффективные. Проводите испытания – на утечки памяти, быстродействие, безопасность.

Стремитесь к модульности

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

Напишите свой мини-конструктор

Напишите для себя конструктор – особенно, если Вы используете C++. Продумайте и напишите. В Вашем распоряжении шаблоны, макросы, перегрузка операторов. Тщательно подумайте над тем мини-ЯЗЫКом, на котором Вы будете строить дальнейшую систему.  Это сильно облегчит Вам работу. Просмотрите примеры такого “языка в языке” – система COM для C++ в Windows, плугины для FireFox, etc.

Используйте те средства, которые хорошо знаете

Что значит “знать средство”? Это значит, знать его выверты и тонкости. CORBA нестабильна при плохой связи, сокеты не выполняют опроса соединения, malloc в сто раз хуже VirtualAlloc, если надо выделить 50Мгб… Это не зависит от языка. Можно написать отличную прогу на плоском C и отвратительную – на C#. (Я помню, как был поражен, когда увидел сорцы Quake).

Моя история

(Вот, уже мемуары пишу, совсем старый стал). Мы писали один сложны сетевой сервис на Объектном Паскале (Дельфи). Это неправда, что это невозможно – вы просто не умеете. Также неправда, что Паскаль плохой язык.  Мы достигли успеха. Одна инсталляция сервера проработала без выключения год (!).  К моменту старта проекта я уже отлично разбирался в поведении сокетов и на быстрых линиях, и на модемах, и через proxy и пр. Также, я был осведомлен о недоработках в DCOM. Кроме того, я действительно разбирался в мутексах, семафорах и прочей виндозной начинке. Посему я принял решение писать на минимальном уровне – на уровне сокетов. И ни разу не пожалел об этом. Важно знать, как правильно готовить…

Перед моим мысленным взором стояли сорцы Quake. Я восхищался авторами. Плоский C – машина анимации – язык моделей – игра. Я портировал свою библиотеку сокетов с C++ на Паскаль (кое какие фенечки, радующие глаз, потерялись при переносе, конечно). Я создал свой конструктор сетевого взаимодействия.  Протокол был построен таким образом, что он ничего не знал о сети – это была такая идеома. Стратагема “прозрачность сети,  RPC”, вещь старая и известная. Подменяя RPC LPC, я мог тестировать код клиента и сервера насквозь, и писать для него тесты. Это офигенно повысило надежность – практически, я получил гарантию.

Я непрерывно совершенстовал код. Вот тогда, именно в тот момент, я понял, что значит “работать в плюс”.  Я использовал все те инструменты, которые мы обычно используем, когда пишем на C++ – BoundsChecker, AQTime, некоторые другие компоненты.  Для взаимодействия потоков я использовал идеому “rendez-vous”, заимствованную из языка Ada. Определенное время, конечно, пришлось потратить на реализацию и доказательство корректности.  Но оно того стоило. Результат превзошел все ожидания- я совершенно избавился от ошибок, наведенных мультипоточностью.

Структуру каталогов за время проекта пришлось основательно перетряхнуть раз пять, не меньше.  Это правильно. Написание правильной программы – мучительный, трудоемкий, неряшливый местами процесс.  Все наши представления о проекте (особенно-первоначальные представления) устаревают и становятся неадекватными.

Классы рефакторились ежедневно.  Я четко следовал шаблону “принадлежность метода”.

Продолжение следует…


Школа – источник тоталитаризма в России

September 13, 2009 by peter631

Наша страна печально известна как источник наиболее мрачных диктатур, какие когда -либо были известны человечеству. Если европейцам недостает жестокости, а китайцам – технических средств, то в России был достигнут оптимум.

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

Теперь я – безработный

September 5, 2009 by peter631

Все. Уволился. Теперь я – безработный. Надо как следует отдохнуть.