?

Log in

LiveJournal for Ронин Виктор.

View:User Info.
View:Friends.
View:Calendar.
View:Website (My Website).
View:Memories.
You're looking at the latest 20 entries. Missed some entries? Then simply jump back 20 entries.

Friday, May 20th, 2011

Subject:Microsoft CA, PKI, Wifi, VPN и другие звери
Time:12:47 pm.

Люди, а есть кто-либо из моих читателей кто обладает знаниями (рабочими и использованными в реальной ситуации), кто работал с Microsoft CA, разворачивал PKI, настраивал VPN Server’ы и Wifi + Radius серверы с аутентификацией с помощью сертификатов? (Не обязательно все одновременно, но чем больше тем лучше).

Тут фирма на которую я работаю, ищет знающего и умного человека, который помог бы (в виде консультанта) помочь разобраться в том как ПРАВИЛЬНО все это сделать, плюс интегрировать с Microsoft CA.

Если что, пишите в почту victor точка ronin at gmail.com

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Thursday, May 19th, 2011

Subject:Кто такой architect?
Time:4:54 pm.

Люди, по вашему мнению, кто должен работать Architect’ом и чем положено заниматься на этой должности?

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Monday, May 16th, 2011

Subject:Несколько вид (легальных) бизнесов, которые я не люблю.
Time:9:56 pm.

1. MLM и другие пирамидальные структуры

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

Больше всего не люблю, за навязчивость. А также за то, что это очень близко к мошенничеству.

2. Авторов, которые пишут книги/проводят тренинги связанные с тем, как разбогатеть.

Как показывается практика чаще всего эти авторы богатеют на продажах книг, видео курсов и т.п.

То есть, то что они пишут или рассказывают, зачастую чисто теоретические идеи, которые они высосали из пальца, чтобы продать дополнительные X тысяч экземпляров.

3. Жизненные коучи или как там их называют.

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

Чуть меньше, но тоже недолюбливаю:

4. Финансовые планировщики

У них есть шаблон по которому они гонят всех своих клиентов, пробегание по этому шаблону занимает X часов, за что берутся деньги, а сводится к трем четырем осмысленным идеям – накапливайте, диверсифицируйте, страхуйтесь и да прибудет с вами Шива.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Friday, May 6th, 2011

Subject:Богатство.
Time:5:09 pm.

Тут в США, уже не помню кто первый произнес фразу из политиков, что тот кто получает $250K в год и выше – это богатый человек.

Не буду вдаваться в детали, почему именно эта цифра левая, а обобщу, что богатство измеряется net worth (не уверен, как перевести на русский), а вовсе не доходом.

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

Собственно говоря, я нечто похожее говорил порядка года назад в статье – Три финансовых рубежа.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Monday, May 2nd, 2011

Subject:Маленькие житейские радости от SSD.
Time:5:27 pm.

Только что устанавливал Windows 7 Ultimate в виртуальную машину. Устанавливал с ISO лежащей на винте (точнее на SSD) и виртуальная машина тоже на SSD. Точно не замерял, но где-то вся установка заняла минуты 3-4.

Все таки бывают, вот такие маленькие программистские житейские радости.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Saturday, April 30th, 2011

Subject:Небольшая ностальгия и вопрос по 802.11n.
Time:10:43 pm.

Когда-то, в далеком 2003 году я поехал к заказчику в штаты. И этот заказчик с барского плеча презентовал мне notebook. И именно тогда я открыл для себя беспроводной доступ к сети. Сейчас это не выглядит ничего особенным, но тогда для меня это была магия, что можно валяясь на диване, копаться в инернете.

Где-то через год, когда, у меня образовалось место, где с одной стороны можно (и хочется) поваляться на диване, а с другой стороны есть интернет, я решил, что пришла пора настроить себе беспроводную сеть. Не помню уж почему я не купил wifi router (может были дорогие, а может просто найти в Харькове не смог). Но, я таки купил пару Bluetooth’ов, один воткнул в стационарный комп, а второй в notebook и настало мне (и моей жене) счастье.

Еще через года полтора, как перебрался в штаты, взял себе обычный 802.11g router и с удовольствием этим дел пользуюсь.

Но, это так сказать присказка. Сказка впереди.

Два дня назад я заметил, что когда общаюсь по Skype по работе (сидя у себя дома), то раз в секунд 20 начинает дико рвать. Ну, думаю, опять с инетом проблемы. Покопался-покопался, и обнаружил, что проблемы не с инетом, а с WiFi. Ping до роутера регулярно пропадает. Ну думаю, это дело уже не впервой, наверное кто-нибудь начал использовать тот же канал, что и я. Запустил программку iStumbler и офигел, так как с того места где я сижу, видно с штук 7-8 сетей. Пошел в другую комнату (где собственно стоит WiFi router) и офигел еще больше, так как там видно уже за десяток сетей.

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

Решил копаться дальше в инете, нашел фигню из фальги, которая делает сигнал более направленным. Склеял ее, оно сиглан конечно улучшила, но не столько, чтобы он добрался до хорошо стабильного состояния.

В общем, махнул рукой, решил купить новый 802.11n router, учитывая то, что вокруг N сетей нет. Взял мощный router – Netgear WNDR4000, в надежде того, что я смогу добиться обещанной скорости 750Mbit/s. Пришел, настроил… все работает, только вот скорости нету.

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

а) Заявленная ими скорость – 750Mbit/s.

Насколько я понимаю это суммарная максимальная скорость на 2.4GHz – 300 Mbit/s + 5.8Gz – 450 Mbit/s.
Может ли один клиент (с одной Wifi карточкой), например обычный notebook использовать два диапазона одновременно и соответственно получить эти полные 750Mbit/?

б) По поводу 450Mbit/s на 5.8GHz

Уж не помню, на каком форуме я читал, что для того, чтобы добраться до этих самых 450MBit/s на 5.8GHz нужна какая-то хитрая карточка, которых пока мало. А большинство notebook’ов максимально могут добраться до 300Mbit/s на 5.8GHz.

в) Из экспериментального.

Я максимально смог добраться до 300MBit/s подключения на 5.8GHz. Находясь в прямой видимости, на расстоянии нескольких метров.

Даальше я начал передавать файл и снова офигел. Я ожила, что скорость будет порядка той самой 300MBit/s. Фигушки вам, реальная скорость оказалась порядка 100MBit/s (кстати о которой тоже читал в разных отзывах).

г) Итого суммируя все вышеперечисленные вопросы

Вообще, реально выжать из этой радости больше чем 100Mbit/s передачи. Если нет, то я думаю буду искать другие варианты, так как цена у роутера откровенно высокая, и при всех этих заявленных 750MBit/s, у меня на руках получается всего 100Mbit/s что совсем не интересно.

Буду благодарен за любую инфу на эту тему.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Wednesday, April 27th, 2011

Subject:Эволюция эстимейта.
Time:10:09 pm.

День 0

Менеджер: Дайте грубую оценку (хотя бы порядок) времени который это займет (просто, чтобы я ориентировался)?
Сколько? 5-6 месяцев? А почему так долго?

День 15

Менеджер: Как мы обсуждали это может занять порядка 150 дней.

День 30

Менеджер: Это займет около 150 дней.

День 45 (начало проекта)

Менеджер: Вот план, который я составил, с разбиением на этапы. Как и планировалось, мы вкладываемся в 150 дней (даже запас остается). Естественно мы будет постоянно следить насколько план реалистичен и в случае необходимости мы обновим план.

День 90

Менеджер: Ребята, мы отстаем от плана. Обязательно нужно поднажать.

День 150

Менеджер: Мы обязаны выполнить наш коммитмент. Все сроки уже давно озвучены высшему менеджменту, продукт ожидают заказчики.

День 210

Менеджер: Блин. Мы вылезли уже из всех сроков, а у нас дай бог готова 70%. Что будем делать? У кого есть какие идеи?

День 240

Менеджер: После совещания с остальными менеджерами, было принято решение – сдвинуть сроки. Мы ДОЛЖНЫ закончить проект через 80 дней. Но на этот раз нам нужно дать твердый коммитмент.

День 300

Менеджер: (Радостным голосом) Идем по плану, буквально с небольшим отставанием.

День 320

Менеджер: (молчит и напряженно барабанит по клавиатуре)

День 360

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

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Tuesday, April 26th, 2011

Subject:А продолжили бы вы работать в своей фирме если…
Time:10:20 am.

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

Что, я имею в виду, что происходит разделение – платит вам один источник, а работаете вы на другой источник.

А теперь внимание вопрос – продолжили бы работать там, где работаете или перешли бы в другую компанию?
P.S. Если хотите, отвечайте анонимно (я понимаю, что не все захотят озвучивать под своим именем, что они бы ушли).

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Sunday, April 24th, 2011

Subject:Читать, читать и еще раз читать.
Time:10:29 pm.

Нужно было потратить всего 10 лет работы, что понять одну простую мысль – один из лучших методов пополнить свои знания – это читать.

ВСЕМ МАЛООПЫТНЫМ ПРОГРАММИСТАМ!!! ПОВТОРЯЮ, ВСЕМ МАЛООПЫТНЫМ ПРОГРАММИСТАМ!!!

Ой… Чего-то это я кричу.

Постоянно читайте книги – по новым языкам программирования, новым фрейморкам, методологиям и т.п.

Легко и играючи можно убить 16 часов на то, чтобы разобраться с одним маленьким багом. Итого, вы потратили 16 часов, и получили каплю информации. За теже 16 часов чтения, вы бы успели прочесть 1-2 книги.

Естественно, вам не будут платить зарплату за чтение книг. Как насчет того, чтобы договориться на понижении ЗП на 20% и то, что вы это время на работе будете читать? За год, вы прочтете порядка 2 часа в день * 200 дней = 400 часов * 20 страниц в час = 8000 страниц / 250 страниц книга = 32 книг.

Бьюсь об заклад, обладая дополнительным знаниями, вы легко повысите свою ЗП на 20% (все еще продолжая работать по 6 часов).

Для тех, что считает, что если прочесть и ничего не делать, то все забудется:
1) Во первых, что-то останется. Даже если останется в голове 10% полезной информации, это будет на две головы выше, чем тоже время потраченое на пофиск нескольких десятков багов.
2) Делайте для себя небольшие записки, самой ключевой информации. Таким образом, даже если забудется, то вы легко сможете по запискам восстановить ключевые моменты.

За сим откланяюсь, пошел перечитывать Code Complete ;)

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Wednesday, April 20th, 2011

Subject:Об идиотизме HostGator.
Time:9:52 pm.

Где-то месяц назад получил от HostGator (hosting который я пользую) прислал письмо типа “11 Апреля мы будем переезжать с старых серверов на новые и у нас обновятся IP, проверьте naming server). Все это было написано в стиле – скоро будет рутинный update, так что если ваш сайт не будет работать 2 минуты не пугайтесь.

Где-то 15 Апреля получаю письмо. Мы таки переехали на новый сервера, не забудьте update naming server, так как ваше доменное именя зарегистрировано не у нас. И 18 числа мы старые сервера собираемся выключить. Это уже было написано более серьезно, в стиле – если вы этого не сделаете, то ваш сервер окажется не доступен. Особенно радует 3 дневное напоминание.

Но это все присказка. А сказка заключется в том, что HostGator сделал следующее – скопировал содержимое старых серверов на новые и НЕ выключил старые.

В чем собственно проблема? Проблема в том, что
а) Между моментом копирования (11 Апреля) и моментом когда DNS обновился есть промежуток (DNS может обновляться до 48 часов). Итого мы имеем, что некоторое количество клиентов попало на старый сервер, где благополучно изменила content (например добавила комментарии), часть попала на новый сервер и изменила content.
б) Еще веселее ситуация у тех, кто скажем изменил naming server скажем 15 апреля и только сегодня обнаружил, что какие-то изменения были сделаны на старом сервере (в течении 4 дней с 11 по 15), а какие-то на новом (с 15 до 19).

А теперь внимание вопрос. Вы себе представляете задачку смержить content двух серверов? Ладно еще WordPress – уверен, что есть какие-то решения. А ведь у людей могут быть куча самописанных систем, которые фиг потом смержишь.

Блин, ну что им тяжело было миррорить все изменения, до тех пор пока старый сервер не будет выключен?

По сему поводу, у меня несколько статей оказались на старом, но не на новом сервере. Хотя у меня и есть backup старого сервера от сегодняшнего числа, но почесав в затылке, я решил, что две статьи не стоят того, чтобы убить на восстановление весь вечер.

И в связи с этим решением, я извиняюсь, перед теми кто писал комментарии к этим статьям, так как комментарии к статьям, тоже остались на старом сервере и в backup’е.

Ну и плюс, если вы пользуетесь HostGator, рекомендую взглянуть нет ли у вас вышеописанных проблем.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Friday, April 15th, 2011

Subject:Специалист подобен флюсу: полнота его одностороння.
Time:4:27 pm.

Недавно со мной связался, Денис Иваницкий- учредитель и главный редактор The Printed Blog в России.

От меня: Собственно, они занимаются тем, что выбирают интересные статьи из блогов и публикуют в печатном виде.

Ну и пару более офицальных слов отсюда

The Printed Blog — новая международная глянцевая газета, состоящая полностью из блогов и другого онлайн контента, созданного исключительно активными интернет-пользователями. Сайт — http://www.theprintedblog.me/

Появившись в начале 2009 года, уникальное издание The Printed Blog первым в мире печати внедрило систему отбора контента пользователями со всей планеты, сжав Всемирную паутину до размеров журнала. Получив широкую известность в США, в начале 2011 года The Printed Blog выходит на рынки Великобритании и России.

И снова от меня: Идея в целом мне нравиться. Но, правда, солянка у них уж очень сборная на мой вкус (скорее рассчитана на раннестуденческую аудиторию).

Ну а теперь к статье:

Я уже когда-то писал о том, что меня радуют собеседования, которые проводятся в режиме
- Есть ли у вас X лет в технологии/языке 1?
- Есть ли у вас Y лет в технологии/языке 2?
Нет? Следующий!!!

Как по мне, это глубой XX век. Да, тогда знание Fortran и DB2 было достаточно, чтобы спокойно работать над проектом в течении десятилетия, без необходимости разбираться в чем-то новом. Как по мне, сейчас такой номер не проходит.

Одна из текущих задач – написать библиотеку, которая будет доступна из Java, Ruby и как модуль Apache. Поглядел, ну что, общее кратное – C/C++. Написал C++ библиотечку (в Visual Studio), сделал ей C интерфейс. Написал Ruby extension (на C), где пришлось повозиться, так как Ruby extension по default компилируются на MiniGW. Потом написал JNI (Java Native Interface) обертку. Поискал в инете, как правильно делать JNI, вынес его в отдельный application server, обернул в EJB (Enterprise Java Bean), чтобы из первого application server до него удобно было добираться. По ходу, слегка пришлось поковыряться в настройках JBoss (чтобы запускать два сервера). Настроил service binding, по ходу чуть подправил XSL transformation, который там был в настройках. Плюс, все это нужно было настроить, чтобы Build machin’а собирала используя
Maven 3.

Как по мне, вот таких вот задач с каждым днем становится все больше. Естественно 80% времени, пишется на одном языке под одну платформу и т.п. Но остальные 20% времени, таки приходится копаться в сложной интеграции платформ, библиотек, языков и т.п.

Соответственно интервью должно все таки быть:
- Есть ли у вас X лет в технологии/языке 1?
- Есть ли у вас Y лет в технологии/языке 2?
- Ой какой вы хороший специалист. А расскажите ка с чем вам еще приходилось сталкиваться

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Monday, April 11th, 2011

Subject:Еще немножко о налогах.
Time:11:42 am.

Мой друг прислал сегодня ссылку, как богатые минимизируют налоги, через очень хитрые (и легальные) схемы с множеством компаний владеющими друг другом, заемы, трасты и т.п.

Чаще всего, после такой статьи, люди выдают фразу а-ля… “Ух… Я бы этих богатых всех расстрелял. Мы, понимаешь, тут горбатимся и платим X процентов налога, а они жируют и платят Y < X процентов".

Категорически с этой идей не согласен (расстрела богатых, за то, что они могут оптимизировать налоги).

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

Так что, по этому поводу, у меня напрашивается фраза "Если безобразие нельзя остановить - его надо возглавить" :)

P.S. Для любознательных людей, которым интересно, как в США можно оптимизировать налоги.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Wednesday, April 6th, 2011

Subject:Налоговое законодательство США.
Time:10:56 pm.

Недавно брат в своем блоге дал ссылку на чью-то статью, как много в налоговом законодательстве России всяких устаревших ошметков, которые только ставят палки в колеса бизнесу. И дальше в одном из ответвлений обсуждения этой ссылки пошло сравнение с налоговым законодательством США.

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

а) Оно (налоговое законодательство) сложное.

Причем не просто сложное, а офигительно сложное, постепенно меняющиеся, оспариваемое или подтвержденное судами.

Причем, мы говорим не только об одном едином законодательстве, мы говорим о федеральных законах (работающих на весь США), штатных законах (работающих для штатах) и еще зачастую законах округа.

б) В нем тоже есть много бумажек, которые нужно получать.

Условно говоря, я когда захотел работать по контракту, открывал свою LLC (Limited Liability Company). В тот момент, для меня это делал бухгалтер, но сейчас я примерно знаю, как это сделать.

- Нужно иметь Article of Organization (устав). После этого, надо придумать имя, запросить свободно ли оно в моем штате, заполнить форму, приложить к ней Articles of Organization, послать и получить в ответ бумагу о регистрации.

- Кстати, для практически любой формы бизнеса, нужно иметь Registered Agent – имя и адрес человека, которому будут приходить бумаги и том, что нужно обновить лицензии или разные вопросы связанные с судами. В целом это, что-то вроде юридического адреса фирмы.

- Дальше, нужно получить Federal Employee ID (это типа идентификационный код для бизнеса) для этого нужно заполнить еще одну форму и послать.

- Для того, чтобы работать дома, нужно заполнить форму, послать и получить Home чего-то там Permit.

- И в нашем округе, нужно еще получить специальную лицензию, BPOL.

- После этого с Federal Employee ID, нужно пойти в банк и открыть банковский счет фирмы.

Та, что бумаги тоже достаточно, чтобы попа была чистой.

в) В США достаточно высокие налоги.

Например работая через этот LLC, мне необходимо платить

28% подоходный налог
15.3% FICA (social security, medicare) – аналог пенсионного сбора
6% штатовый налог
Итого: 49.3% максимум (вероятнее всего реальный налог, учитывая разные возможные вычеты, будет около 40%)

г) Но…. Что я считаю очень важным – В США все три первых пункта решаются просто

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

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

- Все в гораздо большей степени (не могу сказать 100%) происходит по закону. Никто не приходит в фирму с широко
оттопыренным карманом.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Friday, April 1st, 2011

Subject:По пути наибольшего сопротивления.
Time:12:57 pm.

У меня такое впечатление, что у меня где-то в генокоде прописано то, что я постоянно в программировании двигаюсь по пути наибольшего сопротивления.

То есть, если мне нужно сделать, что-то с новой (для меня) технологией, то я последовательно наступаю на ВСЕ грабли, который можно найти.

Сегодняшний пример.
Мне нужно написать небольшой Servlet (условно говоря 1 страница кода) и отмерять jMeter’ом его быстродействие. Ну блин, что может быть проще?

Ан… нет. Учитывая, что сервлеты я писал дааавно (да и JSP’шки, разве что самые простенькие делал), то естественно я успел наткнуться на странные грабли.

Посылаю POST (из jMeter), а в Servlet приходит GET. Ладно, сделал HTML, посылаю форму POST, все равно зараза приходит GET. В общим, в инете рылся, ничего не нашел по этому поводу. Плюнул, Нашел пример сервлета, запустил – для него таки приходит POST.

Ok. Ищем разницу. Нашел таки. Оказывается, в порыве страсти, когда я делал servlet-mapping, то url-pattern я указал “/”
Соотвественно, весь URL у меня должен выглядеть так “http://localhost:8080//”. А я вместо этого и в jMeter и в HTML написал “http://localhost:8080/” (без последнего слеша).

И вот эта зараза, вместо того, чтобы послать меня нафиг или работать нормально, решила, что вместо POST, она будет делать GET, а все параметры выкинем в окно.

Бац-бац-бац головой об стену.

Доктор, дайте мне пилюль от граблей.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Thursday, March 31st, 2011

Subject:Из местных предложений о работе.
Time:5:13 pm.

Я как-то в Украине пропустил момент хедхантерства. В смысле за мной не гонялись люди из HR с красными глазами и предложения перейти к ним на работу.

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

Но, я собственно не о том. Меня смешат три вещи в их письмах

а) Письма не по теме.

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

б) Письма о том, что должность находится за тридевять земель.

Условно говоря, когда предлагают позицию скажем Team Lead на Аляске. Это конечно прекрасно, но опять же в резюме четко написано, что переезжать я не собираюсь.

в) Письма без указания ценового диапазона.

Это пожалуй уже скорее бесит, чем смешит. Приходит, список требований длинной в страницу с кучей пунктов где нужен опыт 10+ лет и т.п.

Естественно, людей которые обладают даже частью умений этого списка – мало и они вполне таки востребованы.

С требованиями у них все хорошо. И еще какая-нибудь фраза будет – вы будете работать в хорошой компании, над интересных проектом (причем пишут это все). А вот про зарплату молчок.

Звонишь им (посредникам), они говорят, что точно диапазон зарплат не знаю, что нужно пообщаться с работодателем, звонишь работодателю, он проводит интервью по телефону, а потом предлагает подъехать в офис,
едешь в офис, общаешься более плотно, и в конце обнаруживается, что потолок ЗП, которые они готовы дать на 40% ниже, чем рыночная цена.

Ну и спрашивается, какого черта вы морочите мозги? Ну, хотите дешевых разработчиков, укажите потолок зарплаты и не трать не свое время, ни время посредника, ни время собеседуемого.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Subject:Вот, что значит оптимизм
Time:1:46 pm.

Только, что в коде встретил вот такую проверку.

user.setTransactionId(++_transactionId);
if (_transactionId == 9223372036854775807L) {
_transactionId = 0L;
}

Даже, если их сервер обрабатывает 100000 транзакций в секунду, то всего пройдет жалких 4 миллиона лет до того, как они доберутся до максимального int64 :)
Мне бы их проблемы :)

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Sunday, March 27th, 2011

Subject:Вопрос харьковчанам…
Time:10:30 pm.

Люди, а что слышно про QArea/CDD?

Я в начале свое карьеры там работал, а потом пока работали там знакомые как-то следил за событиями.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Wednesday, March 23rd, 2011

Subject:Вопрос по JNI и JEE к джавистам.
Time:4:44 pm.

Условия:
а) Есть DLL в которой нужная нам функциональность
б) Есть самописанная JNI обертку (проверил на JSE – работает на ура)
в) Есть JBoss на виндах

Вопрос:
в) Как бы по правильному использовать JNI в JEE envinronment (под JBoss).

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

Из того, что я прочел и понял
- Если у нас что-то крешится в DLL, то падает весь сервер.
- Если Java класс делающий System.LoadLibrary загружен одним ClassLoader’ом, то если второй ClassLoader попытается
загрузить тот же класс, то оно не сможет загрузить DLL, так как DLL уже загружен в процессе (особенность винды) и поэтому не сможет использовать JNI интерфейсы.
- Как я понял, по спецификации EJB не работают с JNI. С другой стороны, в нескольких местах прочел, что работаю, но с ограничениями.

Пару идей которые встречал
а) Сделать C++ приложение JMS enabled. И общаться из приложения в app server с этим JMS enabled приложение
б) Поднять отдельный сервер и общаться через RMI.
в) Сделать adaptor (JavaEE connector architecture). Это опцию я понял хуже всего, но зато похоже она наиболее правильная.

Ну и еще раз повторю вопрос, только теперь чуть более развернуто. Как бы сделать это по правильному? Какие есть еще подводные камни о которых нужно знать (так как хочется не только сделать правильно, но и понимать, почему это правильно).

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Friday, March 18th, 2011

Subject:По поводу мобильного рынка.
Time:9:14 pm.

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

Сначала люди писали под PalmOS. PalmOS умер и половина компаний которые на этом зарабатывали умерли вместе с ним. Остальные перешли в основном на Windows Mobile Он тоже умер и опять же большая часть из оставшихся умер вместе с ним.
Остальные перешли на iOS. iOS правда не умер, но на рынок пришло столько разработчиков, что выделится на нем стало мягко говоря сложно.

Вот такие вот пироги.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


Subject:По следам опыта создания DLL’ек.
Time:4:45 pm.

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

Ну, это естественно на бумаге, а в жизни, как оказалось множество оврагов. Очень быстро и поверхностно (все пишется с точки зрения C/C++, но на самом деле актуально фактически для всего из чего можно собрать DLL)

- Ну начнем с простого факта. В DLLMain нельзя делать много из того, что можно делать в многих других местах.
а) Вызывать LoadLibrary, FreeLibrary
б) Работать с Registry
в) Работать с потоками и процессами. (Создавать потоки можно, но ждать их нельзя)
г) Использовать API, которые предоставляются не Kernel32.dll
д) И само собой нельзя делать все то, что использует вышеперечисленные вещи. Например нельзя использовать COM

- Увы, факт ограничений в DLL написал маленькими буквами где-то на 5 странице документации. Еще хуже то, что зачастую все будет работать нормально, до тех пор пока вам какой-нибудь заказчик не пришлет баг, которые повторяется в 30% случаев, когда луна находится в перегелии и не зная этих ограничений можно долго и счастливо все это дебажить.

- Ладно. С ограничениями разобрались. Если нам что-то надо будет сделать, мы создадим потом, который сделает эти операции или сделаем глобальную переменную объекта, в конструкторе которого сделаем все что нам надо. Правильно? Бззззз… Ответ не правильный.
а) Если мы создаем поток и не ждем его (так как ждать нельзя), мы не можем быть уверенными что DllMain уже закончится, так что мы просто создали race condition и проблемы стали еще более тяжело воспроизводимы
б) Глобальные переменные и статические члены классов инициализируются и деинициализируются внутри DllMain. Хотя это с ходу не видно, но если полезть в CRT, то это станет понятно. Таким образом, описанные ограничения касаются также конструкторов и деструкторов.

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

- Особенно все прикольно становится, когда мы пишем DLL которую будет впихивать в чужие процессы с помощью SetWindowHookEx или просто plugin’ы к какой-то системе. В обоих случаях, интерфейс может быть заранее определен и там нету функций инициализации и деинициализации. Соотвественно, не ясно что делать.

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

- Следующая особенность состоит в том, что все потоки созданные в DLL на самом деле принадлежат процессу. То есть если вдруг DLL будет выгружена из памяти (потому что вызывающий процесс сделал FreeLibrary и DLL counter стал равным 0), то внезапно адресное пространство где была DLL будет высвобождено. А поток останется __ЖИВ__. То есть он попытается выполнить свою следующую операцию, для этого попытается считать следующую команду из адресного пространства где была DLL и мгновенно закрешится. Скажите прекрасно?

- Ok. То есть нам надо остановиться все потоки, которые мы создали в DLL перед тем, как она будет выгружена и это при том, что мы еще даже точно не знаем, как нам запустить какой-то код перед выгрузкой, причем в момент, где нет ограничений. А да, и я еще молчу о том, что написать нормальный thread manager который обрабатывает достаточно большое количество разных ситуаций не вызывая dead lock’ов и race condition, задача в целом не тривиальная.

- Так… Что там у нас дальше. Ага. Вам нужно использовать COM? Само собой вы привыкли к CoInitialize(Ex) и побежали. Только вот, есть одна проблема. Если вы это делаете в DLL то вы исполняетесь в чужом потоке и у потока уже может быть инициализирован COM, причем не в том режиме (STA vs MTA) в котором вам нужно. Что делать? Создавать отдельный поток в котором выполнять все COM действия.

- Единственное пожалуй из положительного. Многое из того, что я писал относится к выгрузке DLL системой. Есть простой трюк, как удостовериться, что система никогда не выгрузит ваш DLL (исключая закрытие программы). Все что вам нужно сделать в DLL это вызывать GetModuleHandle(Ex). Это добавит 1 к DLL counter’у и можно не беспокоиться, что counter когда-либо вернется к нулевому значению.

- А еще во время выхода из процесса, система убивает все потоки, причем поток мог быть посередине модифицирования каких-нибудь данных (внутри критической секции). Еще приятней то, что он мог быть внутри функции работы с heap и таким образом heap будет в inconsistent state. И поэтому лучше не делать ничего хитрого (а по возможность вообще ничего) в DLLMain DLL_PROCESS_DETACH и в деструкторах глобальных объектов (взято отсюда: http://blogs.msdn.com/b/oldnewthing/archive/2007/05/03/2383346.aspx

Вроде все, хотя может что-то еще вспомню.

Originally published at Victor Ronin's IT blog. Please leave any comments there.


LiveJournal for Ронин Виктор.

View:User Info.
View:Friends.
View:Calendar.
View:Website (My Website).
View:Memories.
You're looking at the latest 20 entries. Missed some entries? Then simply jump back 20 entries.