Search
Write a publication
Pull to refresh
0
0

User

Send message

Записки программиста: ООП, And и Or

Reading time15 min
Views5K

Философия ООП



Инкапсуляция, наследование, полиморфизм… Методы, члены класса, разграничение приватности, абстракция… Как часто я вижу статьи на тему ООП и как часто не вижу самого ООП в этих статьях. Не вижу настоящего, живого объектно-ориентированного программирования. Авторы владеют терминологией, могут привести тысячу определений пресловутого ООП, вспомнят пару классических примеров с простеньким наследованием, везде напихают утверждений, что инкапсуляция — это хорошо…

Читать дальше →

Введение в шаблонизатор Blitz

Reading time5 min
Views10K
Из документации о Blitz: Чрезвычайно быстрый и мощный шаблонизатор для очень больших интернет-проектов.

Приведу несколько фактов:
  1. Это шаблонизатор используемый Хабром;
  2. Этот шаблонизатор используется на высоко-нагруженных проектах, он написан на C, подключается как расширение PHP;
  3. Его скорость сопоставима с самим php (бенчмарк под катом);
  4. Верстальщики будт счастливы, так как в шаблонах нет логики приложения, нет циклов, ветвлений и т.д.;
  5. Один из его авторов Алексей Рыбак fisher.


Читать дальше →

Что такое полиморфизм на самом деле. В PHP он тоже существует.

Reading time3 min
Views94K
Написать этот пост побудила недавняя статья о полиморфизме. Она вызвала много споров, но знающие люди понимают, что автор написал скорее о наследовании и о переопределении методов, чем о полиморфизме. Не буду говорить ни хорошее ни плохое о той статье, а просто расскажу, что такое полиморфизм на самом деле. Дабы начинающие php-программисты не остались в заблуждении.
Читать дальше →

JS-PHP MVC интерфейс — cобираем всё вместе

Reading time5 min
Views7.5K
Для начала я хочу поблагодарить m007, который подал идею, как можно упростить Programmer-friendly интерфейс взаимодействия Клиент(JS)-Сервер(PHP), что и поспособствовало написанию этой статьи.

Данная статья является заключительной, в которой я объединю JS-Шаблоны, PHP Model-controller, и добавлю Динамическое создание UI методов на JS (некоторые идеи которого были взяты из статьи m007). Тем самым мы получим на выходе неплохой и удобный фундамент для создания своих AJAX приложений.
Динамическое создание методов на JavaScript

Советы для разработчиков CMS и фреймворков на PHP

Reading time2 min
Views2.3K
Уже не раз сталкиваюсь с подобной проблемой, когда люди приходят и просят помочь в решении проблем распределения нагрузки при внезапном возрастании аудитории их сайтов. Ну и самое трудоемкое в данной проблеме — это самописные CMS-подобные системы, которые иногда приходиться переписывать полностью.

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

Читать дальше →

«Мои продажи», малому бизнесу посвящается

Reading time2 min
Views8.4K
imageВидели ли вы, когда на небольшой торговой точке, после продажи, продавец записывает что то в толстую тетрадку? Учет продаж и товаров в вашем бизнесе это толстая тетрадь и калькулятор? А что, если бы существовала небольшая бесплатная программа, работать с которой могла бы даже «блондинка», а добавить продажу можно с помощью пары щелчков мышкой, не открывая несколько окон, и не вводя ненужные для небольшой торговой точки поля. Программа, в которой можно вести учет товаров, всегда видеть остатки, и легко и просто проводить инвентаризацию. Программа, в которой можно было бы заводить несколько продавцов, и смотреть потом их продажи за день, месяц, год.
Плюс к этому всему возможность просматривать продажи удаленно на сайте, на любой из ваших торговых точек.
И все это бесплатно, с открытым исходным кодом, и с возможность написания плагинов на языке программирования python.
Эта программа под катом...

Вышел релиз Django 1.2

Reading time1 min
Views753
Свершилось, товарищи! Несмотря на почти двухмесячную задержку и постоянные переносы даты релиза, сегодня, 17 мая 2010 года, финальная версия 1.2 великолепного фреймворка увидела свет.

Кратко напомню, какие же произошли самые заметные изменения и дам ссылку на более подробную информацию.

Читать дальше →

Самостоятельное изучение схемотехники. Абстрактный автомат. Часть 2

Reading time5 min
Views122K
Статья написана, собрана и сверстана Brotherofken. Спасибо ему огромное.
В предыдущей статье я попытался изложить все основные определения и принципы, чтобы сделать эту статью максимально понятной. Все не уместилось, так что я настоятельно советую ознакомиться с этими файлами:
Базис, Базис2, Минимизация. Далее в этой статье я оставил несколько разъясняющих пометок курсивом.


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

image
да?

Стандартный программист

Reading time3 min
Views17K
Примерно неделю назад принимал участие в конкурсе на открытую вакансию Microsoft. И провалился. Прошла неделя, мысли в голове (как же так? не может быть!) немного улеглись и я сделал некоторые выводы из этого опыта, коими и хочу поделиться с хабражителями.
Читать дальше →

Электронный документооборот или чего не стоит делать

Reading time6 min
Views33K
Я уже несколько лет занимаюсь внедрением систем электронного документооборота (СЭД). Начинал свой профессиональный путь в небольшой IT-компании, в которой работало около 10 человек. Компания внедряла коробочные решения СЭД в различных органах государственной власти. После этого я работал еще в нескольких компаниях, какие-то из них были очень даже серьезными, с серьезным подходом к проектам и серьезными бюджетами. Но независимо от масштабов компании и «раскрученности» внедряемой платформы, большинство моих проектов были нецелесообразными.
Это не значит, что все проекты были убыточны. Какие-то из них имели технико-экономическое обоснование, а какие-то даже ему соответствовали, и были действительно экономически выгодными. Но экономическая эффективность это не единственная величина определяющая целесообразность проекта.

Читать дальше →

MongoDB vs MySQL (vs Cassandra): А теперь чуть более правильный ответ

Reading time3 min
Views27K
Собственно, сегодня был запощен топик "Сравниваем производительность MongoDB и MySQL на простом примере", в котором указывалось, что MongoDB превышает по производительности MySQL в разы. Хех, когда такое пишут — я сразу лезу проверять и сомневаться. Я полез в исходники оригинального теста (спасибо за публикацию). И как оказалось автор оригинального топика сделал ошибку в три символа и на самом деле не все так:
  1. В оригинале: MongoDB быстрее MySQL пишет в 1.5 раза (ДА, правда у меня в 3 раза)
  2. В оригинале: MongoDB быстрее MySQL читает в 10 раз (НЕТ, на самом деле — MongoDB примерно на равных плюс-минус 10-30%)
  3. InnoDB vs MyISAM — плюс-минус (в оригинале не тестировалось)
Сравнение здесь происходит только как key-value storage (запись-чтение по primary key).


На графике — число операций в секунду, (больше — лучше), шкала логарифмическая.
Последняя строка — то, что тестировал автор оригинального топика (неправильное, не в критику — все мы ошибаемся и учимся).


А теперь подробнее об ошибке…
Читать дальше →

MongoDB — варим хороший кофе

Reading time4 min
Views18K
Введение

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

Сегодня мы поставим MongoDB, ниже рассмотрим свежеиспеченный ХабраЛоггер и пошпионим за главной страницей Хабра в реальном времени.
Читать дальше →

MongoDB и MySQL в Ruby и PHP

Reading time1 min
Views3.7K
imageНекоторое время назад довольно заинтересовался разработкой для MongoDB и провел некоторые бенчмарки в сравнении с MySQL.
Изначально только в Ruby, но, когда результаты изумили (в худшую сторону), то и в PHP, для сравнения.
Может быть, это кому-то сэкономит некоторое время.

Читать дальше →

Делаем правильную платформу или Как повторить Google

Reading time5 min
Views2.7K
Введение
Сегодня я расскажу о проектировании высоко-нагруженных отказоустойчивых систем. Акцент будет поставлен практическую разработку и жареные факты, а не на сухую теорию. После прочтения вы не испугаетесь разработки сервиса с миллиардом пользователей, если у вас будет достаточное количество серверов. Тема весьма обширна, но я постараюсь быть кратким и лаконичным.
Читать дальше →

phpDaemon — фреймворк асинхронных приложений

Reading time6 min
Views45K
Сегодня речь пойдет о phpDaemon — асинхронном модульном демоне-фреймворке, который берёт на себя обработку I/O (libevent) и другие низкоуровневые задачи, присущие демонам. С его помощью легко писать правильные сетевые приложения с блэкджеком и шлюхами.
Из коробки идут сервера FastCGI, HTTP, CGI, FlashPolicy, Telnet, WebSocket (!) — да-да тот самый волшебный пендаль новый протокол от Google. И клиенты mysql, memcached, mongodb… И многое другое, полный список под катом. Работать с сетью действительно просто. Программист средней руки может написать, к примеру, IRC-бота за считанные часы.
В качестве наглядного примера я реализовал вот этот чат на phpDaemon + WebSocket + MongoDB + jQuery. Он наглядно демонстрирует преимущества этой технологии: доставка сообщений мгновенна, накладные расходы при обмене данными минимальны, высока производительность, приложение масштабируется горизонтально. Исходники этого чата (в данный момент 17 кб). Прошу заметить, чат тестировался и работает в Chrome, FF, IE6+, Iron, Safari.
Читать дальше →

Перевод — BoxedIce делится опытом перехода с MySQL на MongoDB

Reading time6 min
Views7.5K
Ссылка на эту статью уже мелькала на Хабре и я столкнулся с интересом к ней. Многие испытали проблемы с освоением оригинала на английском и я решил перевести ее.

Заметки об использовании MongoDB в продакшене


Год назад в июле я писал о том, что мы перешли с MySQL на MongoDB.
Мы запустили MongoDB в продакшене для сервиса мониторинга Server Density. С тех пор прошло 8 месяцев и мы столкнулись с некоторыми вещами.
Читать дальше →

Html и Skype используем в своих приложениях

Reading time2 min
Views71K
Skype уже наступает повсеместно. Особенно в череде последних событий с групповыми видеозвонками. Даже в нашем захудалом городке, у половины пользователей локальной сети стоит Skype. Почему бы не использовать его как дополнительную возможность для общения с клиентами? Он с легкостью обгонит и перегонит пользу от тех же ICQ или Jabber. Ну а про стоимость звонков, я вообще молчу, опсосы на своих роумингах иногда за минуту разговора снимали баснословные деньги. Так дайте же юзерам общаться через Skype, повысьте свой сервис.


Читать дальше →

In20Years.com — взлет в облака

Reading time4 min
Views13K
Всем привет!

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

И вот такая возможность представилась.

Позвольте показать вам сайт, созданный по заказу Goldfinger Applications Ltd. и Luxand, Inc. который мы запустили на прошлой неделе, и немного рассказать о том как мы делали его.

Что это за сайт?


In20Years.com
Вы можете загрузить вашу фотографию на сайт и узнать как возможно вы будете выглядеть через 20 или 30 лет. При включении опции «Drug Addict» можно посмотреть что с вами станет через 20 лет при активном употреблении наркотиков.

Как это работает?
Читать дальше →

Поиск и редактирование значений в памяти сторонней программы на C++

Reading time6 min
Views51K

Чем не устраивает ArtMoney



Часто возникает необходимость найти и поменять какие-либо строки/числа в чужой программе. С этой задачей лучше всего справляется ArtMoney. Для тех, кто не умеет или не хочет использовать отладчики, это на сегодня, наверное, единственный вариант, так как нормальных аналогов просто нету. Хотя ArtMoney и поддерживает очень много возможностей для работы с памятью, весь процесс происходит вручную, без возможности создания действий по алгоритму. Если значений много и их надо, например, менять при каждом запуске программы, то время, затрачиваемое на эту работу, превышает всякие допустимые пределы. Выход один — написать свой редактор памяти!
Читать дальше →

Реляционные БД vs Объектно-ориентированные БД

Reading time5 min
Views30K
К сожалению не нашел на хабре достаточно интересных стаей про объектно-ориентированные базы данных (ООБД). Хотелось бы поднять эту тему, т.к. в последнее время все больше и больше идет разговоров об ООБД. Однако в одну статью всю информацию уложить не получится, поэтому приведу для начала небольшой обзор и свои размышления на эту тему. В этой статье я не буду рассматривать конкретные решения, основанные на каждой из технологий, а только постараюсь сравнить сами технологии.
Читать дальше →

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Registered
Activity