За життя

Facebook's Reach Generator is a system that allows advertisers to pay a fixed fee to ensure that their content/ads will be seen by 75 percent of their fans. (Currently, the company estimates that a business's branded page reaches just 16 percent of fans on average.)

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

Вот за этот наебизнес я и не люблю Apple и Facebook.

(написано для співробітників, публікується із незначними скороченнями)

Останні два тижні я вивчаю стан справ із розробкою для Web. Чим і хочу з вами поділитись.

15 років тому Delphi набула популярності в першу чергу завдяки концепції компонентів, тобто бібліотек коду, котрі легко вбудовувались в структуру і ієрархію класів самого засобу розробки. Загалом на ті часи на ринку був наявний обмежений перелік засобів розробки (під Windows як найбільш масову платформу), а саме Visual C++, Visual Basic, Delphi / C++Builder, пізніше Java і .NET. Все. Були ще рідкісні звірі на кшталт Access і PowerBuilder, але вони вміли використовувати COM / ActiveX. Таким чином, можна було достатньо легко "накрити" весь ринок засобів розробки.

Під web програмами ми розуміємо певний код, що виконується на веб сервері з метою взаємодії з користувачем через браузер або спеціалізовану клієнтську програму. І отут починається бардак.


Тільки в аспекті мов програмування ми маємо як вказані C++, Delphi, .NET і Java, так і такі динамічні мови як PHP, Perl, Python, JavaScript (node.js), Ruby, Scala, Groovy і пара ще більш екзотичних. Причому, наприклад Python'ів є два -- 2.5/2.7 і 3.х, котрі мають істотні розбіжності між собою і багато бібліотек не переписані ще під 3.x . PHP зараз вийшла версія 5.4, котра внесла чергові покращення і зміни (у нас на сервері використовується 5.2).

При цьому кожній мові програмування відповідає ще один чи кілька framework'ів, спеціалізованих для побудови тих чи інших типів сайтів.

До цього додаються кілька типів СУБД, а саме як SQL-based MySQL (в якості найбільш популярної web-based СУБД), так і noSQL СУБД (CouchDB, MongoDB).

Оскільки клієнтською частиною є зазвичай браузер, то єдиною на сьогодні клієнтською платформою є JavaScript з усіма його недоліками (котрих чимало). Розумною альтернативою був Flash, але він на сьогодні припинив розвиватись і Adobe переключилась на HTML5 і Flash.

Конструктивно серверний код web програм може виконуватись в кількох середовищах:

1) shared хостинг. Годиться для невеликих сайтів, зазвичай надаються доступ до MySQL (кількість баз даних обмежується) і PHP чи Python чи Ruby.

2) dedicated або virtual хостінг. Вся система (фізична або віртуальна) віддається в розпорядження орендаря, котрий має адмініструвати її.

3) PaaS, Platform as a Service. Це дуже цікава річ, про неї нижче.

Що таке клауди? Їх можна поділити на клауди зі збереження даних і клаудні платформи для запуску віртуальних машин.

Клауди зі збереження даних зазвичай побудовані на базі noSQL систем і пропонують сховище для пар "ім'я-значення", де значення (BLOB) може бути довільного розміру і може мати певні додаткові атрибути. До таких клаудів відносяться відомі Amazon S3, Microsoft Azure (точніше, Azure включає в себе сервіс зі збереження BLOB'ів). Доступ до таких клаудів і операції з ними здійснюються через HTTP-подібні RESTful APIs (це GET або POST запит по HTTP).

Цікавою штукою є клаудні платформи для запуску віртуальних машин. До них відноситься Amazon EC2 і деякі менш відомі. Фактично, це той же Virtual Hosting, але з можливістю робити репліки віртуальних машин та/або змінювати параметри цих машин (кількість пам'яті, bandwidth тощо). Самі віртуальні машини створюються клієнтом і завантажуються "в клауд". Віртуальні машини підлягають адмініструванню клієнтом. Фізичне розташування машин не має істотного значення, також вони можуть бути переміщені при необхідності.

Повертаємось до PaaS. Це покращений варіант клаудних платформ для запуску VM. В PaaS постачальник сам створює і адмініструє VM. Клієнт завантажує фактично своє програмне рішення (а не VM), зроблене під платформу. Тобто клієнту надається SDK, а клієнт пише свою програму із використанням цього SDK (одну - якщо програм кілька, то це незалежні програми, які мають взаємодіяти через публічні API, оскільки вони можуть виконуватись на різних віртуальних машинах в різних кінцях світу).

На сьогодні дві основні PaaS - це Google AppEngine і Microsoft Azure. Вони мають багато схожого, але і багато відмінностей.

Google пропонує створювати програми на Java або Python (або Go, але це їхня приватна мова програмування, котра набула певної популярності в 2009-му році, але faded away з тих пір) і використовувати мішанину сервісів від гугля, таких як якесь noSQL сховище для даних або механізми content retrieval'а.

Microsoft підійшли до питання з академічною прискіпливістю і створили потужну інфраструктуру сервісів, доступних для програм, що виконуються на платформі. Також, SDK доступні для .NET, Java, node.js і PHP (є ще якийсь generic SDK, з яким я не розбирався). Фізично це працює наступним чином: програма (кожна окрема) виконується на власній віртуальній машині під управлінням Win2008 Server + IIS (в випадку, якщо програма вимагає веб-сервера), але для нас це питання не є важливим.

Таким чином, можна сказати, що не існує якогось рекомендованого або загальноприйнятого способу розробляти ПЗ для веб програм. Також, на жаль, відсутня і лідуюча платформа, на яку могли б орієнтуватись виробники компонентів. З певною натяжкою можна сказати, що є популярним PHP, але тут ми натикаємось на інший нюанс - хоча PHP можна зв'язати з кодом на С/С++, не всі користувачі мають змогу зібрати або встановити С++ модуль під свою платформу.

З технічної сторони немає сенсу глибоко вивчати будь-яку вищеперераховану технологію, хоча варто почитати базово про кожну з них, щоб розуміти, що ми маємо на ринку. Решта (framework'и тощо) вивчається за наявності конкретних задач.

Є лише дві речі в випадку саме веб-програмування, які треба вивчати і знати.

По-перше, це JavaScript як мова і як технологія. Починався JavaScript досить просто, але зараз він суттєво ускладнився - там є об'єкти і класи, активно використовуються lambda функції і інший синтаксичний мотлох, малопридатний для читання і розуміння людиною (хоча це хвороба більшості сучасних динамічних мов, чиї автори змагались, хто заплутаніше систему позначень введе).

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


Очередной зажигательный клиент: - Я у вас 5 лет назад покупал молоток. Пытаюсь им забить гвозди в трех стенах. В две забиваются, а в третью не хотят. Строители говорят, что все стены деревянные. Помогите. - (мы) пинайте строителей, может там арматура внутри, почем нам знать. Или купите новый молоток повышенной проходимости, или проапгрейдитесь до перфоратора, он и арматуру перебьет. Вообще к молотку прилагается инструкция (доступна для прочтения в онлайне), в которой детально описаны шаги решения вашей проблемы. - Не хочу апгрейдиться, хочу гвоздь забить. Но не отсылайте меня к инструкции, скажите, что с моими стенами. Это же ваш молоток!
Поки була жива UMC, вона все-таки була українською компанією. МТС став російським, що труба. І нехай оператори розмовляють гарною українською мовою, і голосові меню теж чудово локалізовані. Але там, де робот очікує на голосову відповідь абонента (конкретно в автоматизованій системі оцінки якості сервісу), українська мова не розпізнається. Російська розпізнається чудово і з першого разу. Тобто тим, хто впроваджував систему, на думку впасти просто не могло, що хтось може користуватись іншою мовою, ніж російською.

Половина сервісних повідомлень теж не українізована :(

І до речі - у нас мали ще рік тому ввести сервіс зі збереженя номеру телефона при зміні оператора. Це працює чи так і не ввели?
Цитата від співробітника: "Те що воно не збирається, не значить що воно не працює"
Напоминаю, что продаем мы совсем не молотки, а узкоспециализированное системное программное обеспечение, но для простоты объясняю на молотках. Жалоба очередного пользователя: "у нас от вашего молотка стены рушатся". Ну так эта ... к строителям и обращайтесь, мы тут при чем. А вот еще один: "когда я забиваю гвозди, из-за стены раздаются стоны. Стена выходит на улицу, а живу я на 16-ом этаже". Вызывайте команду по отлову привидений, что я еще могу посоветовать.
- У меня кривые гвозди, и ваш молоток забивает их через раз. - Возьмите прямые гвозди. - Не могу - кривых гвоздей уже закуплено 100 ящиков, компания, производившая эти гвозди давно обанкротилась (еще бы), а мы должны пользоваться тем, что уже куплено.
Раздаем бесплатно молотки. Хорошие, с резиновой ручкой, качественной сталью, сбалансированные, - хоть завтра в бой. На ручке наклейка "соблюдайте правила ТБ при работе". Приходит клиент, топает ногой, спрашивает "а где инструкция к молотку на 100 страниц"? Для него, блин, одна инструкция - пусть забивает гвозди головой.
Для людей, понимающих что-то в базах данных, просто фантастическое детективное чтиво на тему о том, как простое число (проще чем нули в проблеме-2000) может теоретически привести к мировому краху. Почему? Потому, что завалив базы данных, например, нью-йоркской фондовой биржи можно вызвать такую панику, что никакому мировому кризису и не снилось.
Син з батьком приiхали на море. Батько:
- Синку. Оце море. Син, що все життя у степу прожив i навiть рiчки не бачив:
- Де-е-е? Батько:
- Оце, синку, вся оця вода - це море!
- Де-е-е-е? Зайшли по колiно в воду.
- Синку, дивись! Оце небо, ото земля, а оце сине - це море!
- Де-е-е-е? Зайшли по шию. Батько:
- Синку! Оце ти у водi стоiш - це усе море!
- Де-е-е-е? Батько його за шию, та писком у воду. За хвилину витягуе. Син:
- Батьку! Що це було?!
- Море, синку, море..
- Де-е-е-е?

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

  • Архів

    «   Травень 2024   »
    Пн Вт Ср Чт Пт Сб Нд
        1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31