27 трав. 2008 р.

Дружині присвячується (не програмісти не зрозуміють) :)

Моя дружина знайшла собі заняття на той час поки чекає на мене з роботи. Вона розгадує японські кросворди (хто не в курсі, це такі де треба замальовувати клітинки і врезультаті отримуємо малюнок). Вона вже доволі добре нацикалася його розв"язувати, але деякі поставили її в глухий кут.
Тут я згадав студентські роки, коли було нємєряно часу і ми займалися тим що нам подобалося (крім останніх 2-х тижнів перед сесією :) ). Мені закортіло згадати алгоритми і структури даних. Я почав писати програму яка розв"язує японські кросворди :) Пишучи алгоритми розв"язку я зрозумів що я розв"язую ті кросворди набагато гірше за мою кохану. Тому програма не зможе рішити ті кросворди які вона не змогла рішити :(
Прийшлось поміняти тактику. Я рішив примінити грубу силу (повний перебір). Тобто спочатку я використовува ті алгоритми які написав, а після того доповнював все з допомогою перебору всіх варіантів. Це був тернистий шлях згадування що таке рекурсія і як її написати :) Коли я перший раз запустив ту програму, то зрозумів що рахувати вона буде довго і тому треба виводити якісь проміжні результати. Так і зробив. Після нескладних математичних підрахунків вийшло що моя програма буде рахувати результат 2.5Е+110 секунд :) Вобщем ви зрозуміли що Сонце згасне швидше ніж я дочекаюся результату :) Після нескладної оптимізації програма почала працювати в 100 разів швидше :)
Вобщем оптимізація не помогла :)
Тут було тільки 2 варіанти виходу з ситуації:
1. Написати програму розприділених обчислень і роздавати ці обчислення всім бажаючим які поставлять в себе ці програми (так роблять для програм які обчисляють структуру лікарства проти раку і т.д.)
2. Поміняти алгоритм обчислення.

Я прикинув, що при 1-му варіанті, навіть якщо 1 млрд людей поставить собі мою програмку, то ми всеі рівно будемо чекати на результат 2.5Е+99 секунд. Тому цей варіант був відкинутий як не ефективний :)

Це вже було питання плану зможу/не зможу.
І ось, після 4-х годин планування алгоритму і його реалізації та після 2-х годин пошуку багів, вона (програма) народилася. Вона розгадує великі кросворди розміром 28*40 за лічені секунди!

Ура товариші! Успіхів вам на творчій ниві :)

Шлях хворого

На дворі чудова літня погода а я хворію. Горло болить. Давно не хворів і не жалію :)
Ну, думаю, захворіло горло - не біда. В мене половина родини - лікарі. Причому вони покривають значну долю професії. Від анастезіологів і лікарів які займаються дітьми до 1 року і до хірургів-урологів, невропатологів і зубних лікарів. Як бачите довгий список, але ні терапевта ні лора серед них нема.
Недовго думаючи я позвонив до лікаря який найближчий до лора - це уролог :) В нього явно хірургічний (різкий) підхід до лікування. Хворієш - пий антибіотики. Антибіотики якось не дуже хотілося. Тут позвонив батько і сказав щоб я позвонив до хресного. Він у мене невропатолог і повна протилежність (як по характеру так і по підходу до лікування) до хірурга :) Хресний прописав ліки попростіші, з порадою "якщо не поможе за 2 дні, то позвони - призначимо щось сильніше".
Нажаль організм не справився... Вобщем за 2 дні мені легше не стало і я пішов в поліклініку...
Все ж таки треба щоб лікар тебе бачив, тоді він зможе краще лікувати ніж по телефону.
Не люблю я поліклініки!
Як ви думаєте, що перше необхідне там коли в тебе болить горло?
Лікарства? Гроші? Ні, картка хворого :) "Без бумажки - ты букашка, а с бумажкой - человек"
Пішов я в касу, яка в протилежному кінці приміщення і після добровільного внеску 3 грн, я отримав карточку. Думаєте все? Ні! Перед тим як піти до лора, треба піти куди? Правильно - на рентген :) А куди без нього?! І взагалі кого тут хвилює що в мене болить і яка в мене температура :) Рентген, доречі, коштує 1 грн. Поки я стояв в черзі, то ще вспів покашляти на толпу школярів і ліцеїстів, яких теж туди направили.
І ось він довгожданий момент! Я не сподівався пройти цей квест так скоро! Мене направляють до лора!
Ще пів годинки в черзі і я опиняюся в компанії веселого лікаря і його помічниці. За 5 хв вони витягують з мене інформацію про те звідки мій рід, де я проацюю і ким, як саме я захворів, чому я гуляв вночі легко вдягнений, і вспіли поприкалуватися з того що я собі зробив опіки на горлі пастою розенталя (хто не знає, ще така штука яка сильно пече).
Що до лікарів - в мене претензій не було. Я б і ще трохи в них посидів :)
От що впало в очі, так це те що іншому пацієнтові, в якого список лікарств був набагато соліднішим від мого, список виписали прямо на бланку аптеки яка розташована поряд і зі словами "йдіть туди, там дешевше" відправили його куди їм треба :)
Чесно кажучи, все було не так страшно як я думав.
Здоров"ячка вам!

1 квіт. 2008 р.

Назбиралося

Привіт :)
Почав писати про те чому програмісти заробляють більше ніж інші... але якось думки плутаються, в результаті вийшло щось типу "тому що заслуговують" :)
Взагалі якщо не розглядати систем які створені тільки для заробляння грошей (мережевий маркетинг, макдональдс і т.п.), то гроші зароблять ті хто створють щось. Здавалося б просто, але мені здається це не всі усвідомлюють. Ось тому програмісти заробляють 1500$ (зп J2EE програміста в 2008 році по даним сайту http://www.developers.org.ua/salary-db/data/salary-by-year/2008). Для порівняння, середня зарплата по Україні в лютому стновила 1 633 грн. Як бачите цифри приблизно ті ж, але валюта помінялася :)
Візьмемо, для прикладу, бухгалтерів. Я вчив бухгалтерію і мушу сказати що вона складніша ніж програмування, там більше відповідальності і можна легко попасти на гроші чи під кримінальну відповідальність. Але зарплати там менші. Чому? Вони не створюють, їх сприймають як ще один податок для підприємців. Бо підприємцю даром не потрібна вся ця звітність, він дуже просто може підрахувати свої прибутки і витрати.

Далі вставляю цитату з статті, бо краще все рівно не скажу.
«Брейн, а что мы будем делать завтра? Как всегда, попытаемся захватить Мир!»

Очень часто перед разработчиками (вообще говоря, перед людьми любых профессий) стоит эта самая задача: «захватить мир». И день ото дня, месяц за месяцем, возможно, год за годом, они пытаются сделать это… Захватить Мир!

Безусловно, это абстрактный пример, но он, как мне кажется, даёт понять, что зачастую люди работают над проектом, когда непонятно, что именно надо сделать «здесь и сейчас!», как разбить проект на части, с каждым днём приближаясь к его финальной реализации, какой следующий шаг и вообще – что же в итоге должно получиться?!

Если перед вами стоит такая задача, и вы не телепат, который может прочесть мысли заказчиков, начальников, предугадать все неожиданности развития ситуации – то вы попали в беду. Особенно, если перед Вами стоят чёткие и сжатые сроки на выполнение. Реализовать этот проект в срок – фактически нереально.

Вы даже можете хорошо представлять, что должно получиться в итоге, но у вас нет почти ни одной детали выполнения проекта, перед вами лишь перспектива и ни одной реальной задачи, которую Вы можете сесть, и за 1-2 рабочих дня полностью реализовать. Что происходит тогда? Вы начинаете делать так, как считаете нужным. И так поступают все – и гуру своего дела, и начинающие специалисты. В итоге, вы можете разработать безупречно тот или иной этап проекта, но… Придёт начальник, заказчик, клиент – и скажет, что это совсем не то (или частично не то), что он хотел видеть. Что надо сделать так и так, совсем не так, как сделали вы. Результаты – день или два (в лучшем случае) вашей работы летят коту под хвост, вы садитесь переделывать эту часть проекта заново, но вы уже никогда (скорее всего) не сделаете её с тем же энтузиазмом и так же быстро, как делали изначально по своим соображениям. Такова психология большинства людей. Конечно, если вы к таковым не относитесь – это плюс.

В итоге, реализуя так одну часть проекта за другой, исправляя всё раз за разом, выполнение проекта может затянуться на срок, в 2-3-4 раза превосходящий изначально поставленный.
Как вы уже поняли, это был пример на подход «сверху вниз».

Як бачите, "щось тут не так". А все мабуть тому що основною роботою займалися не професіонали а замовник. "Він ж замовник" скажите ви. Але ж якщо ви замовите комусь сантехніку у ванну, то ви не будете розказувати що "поставте мені ту прокладку на кран, бо вона краща, а ці частини від того виробника, а тут використовуйте не ту відкрутку, а цю, і взагалі я хочу щоб кран трансформувався в душову кабіну або сауну, і щоб це все було зроблено за 2 дні".
Тут як казав один наш викладач-"фифтемотехнік", головне система. А система на диво схожа де б вона не була. Тобто якщо перенести окремі принципи з програмування у реальний світ, то все стане набагато простіше. Наприклад, в програмуванні завжди розділяють інтерфейс і реалізацію, вводять окремі сервіси/делегати для виконання тих чи інших задач. Ось де було б класно якщо б замовник просто сказав "я хочу бачити таке", а решта - проблема програмістів.

Tongue twister 2

Whether the weather be fine,
Or whether the weather be not,
Whether the weather be cold,
Or whether the weather be hot,
We'll weather the weather,
Whatever the weather,
Whether we like it or not.

Особисто мені ця скоромовка далася доволі тяжко, бо треба витягувати губи вперед говорячи букву w і ставити язик між зуби говорячи th. В мене получалося що в мене язик завжди між зубами, тому я шипелявив :)
А як це получилося у вас?

4 бер. 2008 р.

Вона рухається!

Вона рухається :)
Моя дитина рухається... всього лише прикласти руку до живота коханої... пару секунд... і удар... ну звісно не такий сильний як у футболістів :) але є!

22 лют. 2008 р.

Все що назбиралося за відпустку

Хм... Що ж трапилося під час відпустки?
1. Я відпочив
2. Зібрався з думками
3. Покатався на лижах
4. Побачив водоспад в Яремчі
5. Побачив музей писанки в Коломиї
6. Все ж таки зайшов на роботу в п"ятницю вечером :)

Мав час для глибокого аналізу стезі свого життя, внаслідок чого в тяжких муках родилися 2 висновки:
1. Машина - це класна штука. Бо можна поїхати куди хочеш і коли схочеш, а не мучитися автобусом. + можна зупинитися де завгодно на відпочинок або щоб подивитися на краєвиди.
2. Машина нам не потрібна :) Бо вона є в більшості наших друзів/знайомих.

Доречі, останнім часом все частіше натикаюся на те що друзі рішають набагато більше ніж гроші :) Не те щоб я цього не знав, але за останні декілька тижнів я це дуже часто бачив:
1. Моя знайома в Арсені не чекала в черзі на зважування фруктів. Їй зважили без черги. Потім вона розповіла що колись працювала в Арсені і її знайома побачивши її, сама винесла їй зі складу новий ящик з бананами щоб та могла собі найкращі а потім ще й зважила їх без черги.
2. Я з Наталею і її родичем поїхали на Юриній машині в Буковель. При цьому ми ночували в Наталіної знайомої за трошки дешевшу ціну ніж всюди. + ми вмовили Юру зупинити біля водоспаду в Яремчі. Доречі ось фото...











3. Більше того, ми поїхали в Коломию подивитися на славнозвісний музей писанки, де визвонили колишнього одногрупника Костю і він нас на своїй машині возив по всій Коломиї і показував все. Та нам би ніякий гід ні за які гроші не показав і не розказав так багато як він!
Доречі, ось фотки Коломиї і музею



















15 лют. 2008 р.

Puzzle

puzzleУра! Це сталося! Ми (в більшій мірі Наталя) нарешті закінчили складати пазл! Їй святий Миколай приніс пазл. Ну він трошки не розрахував і приніс пазл з 2000 кусочків. І коли Миколай купляв подарок, то ще тоді продавець відмовляв від цього. "Я складав пазл на 1000 штук цілий місяць і потім закинув" - сказав він. Але Миколай рішив що ми сильні і справимося :)
І ось, починаючи від Миколая і аж до сьогодні ми складали той пазл!
Доречі, деякі люди питають нас "що ви робите вечорами, якщо у вас телевізора немає?". Відповідь "розмовляємо" вони сприймали як знущання над ними. Люди, ви праві, ми не розмовляємо, ми пазли складаємо :)
Дивіться яке чудо у нас вийшло!!!
П.С.: Не раз було так тяжко складати, що ми думали що потрібного елементу просто не існує, що спакували наші пазли погано і ми чогось просто недорахуємося... Пакували пазли дійсно погано, але в нашу користь :) В нас лишився один запасний елемент (див. зліва внизу)