Pull to refresh
8
0
crazyprog @crazyprog

User

Send message

Использование V8, заключение

Reading time4 min
Views2.7K
Использование V8, заключение

Часть 3 находится здесь: habrahabr.ru/blogs/development/72765

Часть 2 находится здесь: habrahabr.ru/blogs/development/72592

Часть 1 находится здесь: habrahabr.ru/blogs/development/72474

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

Открытое письмо стартапщикам

Reading time4 min
Views588
Доброго всем дня. Прошу прощения за пафосное название, но по-другому сформулировать не получилось. Дело в том, что сегодня, как говорят психологи, у меня случился инсайт. Несколько вопросов, которые долго мучили меня, разрешились, и я взял на себя смелость поделиться этим с сообществом, полагая, что это может быть полезно стартапщикам.
Начну, пожалуй, с самих вопросов:
1. Почему, когда ты запускаешь интернет-стартап, все вокруг начинают спрашивать «Зачем ты это делаешь? Кому это нужно? Как будешь зарабатывать?» и тому подобное, а когда, например, организовываешь IT-компанию, никто ничего не спрашивает?
2. Что заставляет людей уже через секунду после поста на хабре о твоем новом проекте совершенно не заслужено унизить тебя в коментах и облить грязью твое детище?
3. Почему так мало появляется действительно популярных проектов, ведь хороших идей достаточно, ну, если и не у нас, то в мире, так почему же?
4. Что необходимо, чтобы твой проект был популярен?
Мои варианты ответов под катом.
Читать дальше →

App Engine SDK 1.2.7 — Bugfix Release для Python

Reading time1 min
Views629
В свете двух проблем в релизе Python SDK 1.2.6, представлена версия 1.2.7. Это всего лишь bugfix-релиз с минимальными изменениями (без добавления нового функционала), всем пользователям Google App для Python рекомендуется обновить SDK.

Этими двумя проблемами были:
-В релизе 1.2.6 был добавлен ключевой аргумент в конструктор класса модели, нарушавший работу подклассов, которые запрашивали частные переменные конструктора с позиционными (не именованными) величинами. Исправление было внесено для восстановления изначального способа упорядочивания и установления нового ключевого аргумента только в качестве именованного.
-В релизе 1.2.6 было нарушено взаимодействие между remote_api и локальным сервером разработчика.

Собственно, обе проблемы исправлены в релизе 1.2.7.

Версия Google App для Java никаких изменений не претерпела.

Источник — Google Developer Blog

Интересный подход для кэширования моделей

Reading time3 min
Views1.7K
На днях я получил задание реализовать кэширование в моделях. В обсуждениях с коллегами родилась довольно интересная, на мой взгляд, идея, которую я бы хотел выставить на ваш суд.
Читать дальше →

Мелочи, облегчающие жизнь

Reading time3 min
Views20K
Postgresql, без сомнения, великолепная СУБД. Она обладает обширнейшими возможностями, отличной документации, и при всем при этом является бесплатной. Однако, всегда найдется что-то, чего пользователю не будет хватать. И в postgresql это легко исправляется, ведь он позволяет создавать функции на языках на любой вкус, будь то Plpgsql, Perl или даже Java.

Приведу пример. Мне всегда не хватало функции, получающей DDL выбранной таблицы. В oracle, например, вы можете воспользоваться для этого средствами пакета dbms_metadata. А вот в postgresql аналога почему-то нет. То есть можно конечно использовать pgdump, но это уже немного не то, мне хотелось бы иметь функцию бд. И так далее, думаю у каждого найдется несколько таких небольших «хотелок».

В любой моей базе я создаю в схеме «public» определенный набор вот таких облегчающих мне жизнь функций. В этом топике я хочу поделиться ими. Приглашаю всех также поделиться в комментариях своими наработками.
Читать дальше →

Стоит ли модерировать пользовательский контент на ранней стадии развития стартапа?

Reading time1 min
Views601
Не так давно, мы с друзьями запустили небольшой старапчик. Представляет он из себя социальную сеть для музыкантов. Группы регистрируются, закачивают музыку, выкладывают фотки. В общем все, как у всех. Все было хорошо до тех пор, как я начал замечать, что музыканты — люди не сильно грамотные, но очень ранимые. Названия половины групп было набрано КАПСЛОКОМ, более того, из этой половины где-то треть содержала всякие спецсимволы, как-то: звездочки, восклицательные знаки и символы ядерной угрозы. Из-за чего весь сайт был похож на зоопарк и читать его страницы мне лично было не очень приятно.
Мне эта ситуация стала не по душе и я решил модерировать собственноручно все названия групп. Переводил все в нижний регистр и убивал всю спецуху. Некоторые группы очень обижались, говорили, что это их фирстиль, что их так знают фанаты и т. д. Правил названия закаченных песен (капсы, неправильная пунктуация и т. д.)
В связи с этим возникли вопросы:
— А надо ли модерировать пользовательскую информацию?
— Чему стоит отдать предпочтение: неприкосновенности пользовательского контента или поддержания чистоты сайта?
— Каким образом можно воспитать пользователя не писать всякую ерунду и хоть иногда стараться писать по правилам русского языка?

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

Эссе о валидации данных

Reading time8 min
Views30K
В заметке «Можно ли делить на 0,01 ?» на сайте тестировщиков я написал, что при тестировании нужно проверять согласованность валидаторов входных данных с логикой обработки этих данных приложением. Но из комментариев к этой заметке я понял, что для понимания того, как надо тестировать валидацию данных, надо понимать, как она должна работать, что можно считать правильным, а что нет. Поэтому я написал об этом отдельную статью. В ней рассматривается три вопроса: 1) зачем вообще нужна валидация данных, и 2) где и когда может выполняться валидация данных, 3) какие бывают разновидности проверок. Ну и конечно продемонстрировано, как всё это выглядит на живых примерах. А может быть мои рассуждения окажутся интересны не только тестировщикам, но и разработчикам.
Читать дальше →

Веб-аналитика: анализируй это! Часть 5. Разделяй и думай

Reading time5 min
Views7.8K
Часть 1. Вступление.
Часть 2. Сбор данных.
Часть 3. Базовые метрики.
Часть 4. От статистики к аналитике

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

Каким же образом опытные аналитики “залезают в голову” пользователю, имея лишь усредненные данные по сайту? Никакой магии. Они проводят процедуры, которые разбирают эти авгиевы конюшни:

— Сегментируют данные: разделяют всех пользователей на группы исходя из определенных критериев и рассматривают поведение не всех пользователей, а каждой из этих групп в отдельности.

— Строят предположения и проверяют их: выискивают вероятные объяснения для сложившейся ситуации и пытаются повлиять на ситуацию исходя из этих предположений, наблюдая за результатом.
Читать дальше →

OpenCL. Подробности технологии

Reading time10 min
Views38K


Здравствуй, уважаемое хабрасообщество.

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

читать дальше

Модификация байт-кода виртуальной машины Java

Reading time7 min
Views13K
Данный пост является продолжением статьи о байт-коде виртуальной машины Java, и мы считаем, что читатель имеет представление о его структуре. Наиболее распространенной библиотекой для модификации байт-кода является фрейморк ASM от object web. На нем построено большинство высокоуровневых библиотек, в частности cglib.

Библиотека ASM имеет два варианта API. Что бы лучше представить отличие между ними, проведем следующую аналогию. Класса это некое дерево. Корень его- сам класс. Переменные, методы, подклассы это его листья. Инструкции — листья методов. Таким образом можно провести параллель с XML и двумя типами его парсеров. Первый вариант Core API похож на SAX парсер. Когда нужно прочитать, создать или внести изменения, делается обход дерева представления класса. Второй вариант (Tree API) работает по прицепу DOM парсера. Сначала строиться дерево представления, а затем с ним производиться необходимые манипуляции. Очевидно, что первый вариант API менее ресурсоемкий, более подходящей для внесения небольших изменений. Второй требует больше ресурсов, но и дает более гибкие возможности. Мы рассмотрим только первый вариант API.

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

Использование V8, часть 3

Reading time5 min
Views3.4K
Использование V8, часть 3

Часть 3. Многопоточность, расширения и оформление кода

Часть 2 находится здесь: habrahabr.ru/blogs/development/72592

Часть 1 находится здесь: habrahabr.ru/blogs/development/72474

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

Правильно и удобно перекодируем mp3-теги в UTF-8

Reading time1 min
Views47K
Здравствуй, уважаемый Хабр.

Если у Вас есть mp3-файлы с тегами в windows-1251 кодировке, то Amarok в своей базе данных такие файлы показывает криво.

Этот пост — для тех, кто ранее использовал Rus-Xmms
проект для быстрого и удобного избавления от головной боли, связанной с кодировкой mp3-тегов и получил ее снова с выходом KDE4 и
нового Amarok.

Этот пост — также для тех, кто не совсем понимает, как в Linux можно корректно и рекурсивно перекодировать теги у
множества mp3 файлов в юникод и версию ID3v2.4.

Постараюсь преподнести это максимально лаконично, поэтому не буду описывать установку программы в [здесь подставить
название Вашего любимого дистрибутива]
.

Рецепт приготовления прост и находится под катом.

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

Практика внедрения PHPunit

Reading time7 min
Views8.7K
Уже достаточно сказано о пользе автоматизированного тестирования (например, тут и тут), но до сих пор многие так и не пишут тестов. Одна из причин, как мне кажется, в том что предлагаемые способы автоматизации тестирования сложнее чем необходимо для большинства случаев. Сегодня я хочу рассказать о том как это сделано у нас.

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

Задача отображения деревьев в MySql. Способ отображения на хранимых процедурах

Reading time7 min
Views14K
Доброго времени суток.

Очень хотелось поднять вопрос о древовидных структурах в MySql. А конкретно о выборках и хранении данных…
Пользователям Oracle и PostgresSQL живется хорошо, в этих БД есть встроенные средства выборки рекурентных данных (см. Иерархические (рекурсивные) запросы).
Пользователям Mysql приходится работать уже с тем, что есть, то есть работа на стороне клиента.
Поскольку эта тема не однократно поднималась, то я попробую рассказать о конкретной задаче и способе её решения.
Читать дальше →

Стартапы по бартеру

Reading time1 min
Views1.1K
Хотите сделать стартап (под этим словом я здесь понимаю любой новый интернет-проект), но не имеете стартового капитала? У вас есть личный интернет-проект, но вы не имеете возможности его достойно развивать?

Как бы вы отнеслись к предложению, чтобы другой специалист помог вам с вашим стартапом по бартеру: просто для портфолио, за постоянную ссылку с вашего сайта или за определенную работу для него с вашей стороны? Например, если вы программист — дизайнер нарисует для вас логотип, а вы сделаете для его сайта форму отправки контактов на AJAX.

Выглядеть это будет где-то так (кликабельно):

image

Прошу оценить мою идею. Если она окажется достаточно перспективной — реализую.

P. S. Кстати, ищу программиста для реализации этого проекта. Сам смогу сделать все, кроме программирования. Точнее смогу и его, но тогда это затянется. В идеале на symfony, но можно и на любой другой PHP-основе. Сам могу проектировать, дизайнить немного, верстать, писать тексты, обеспечивать юзабилити — могу помочь с вашим проектом. Или как-то еще помочь. Пишите в личку.

7 шагов для систематизации процесса дизайна и разработки

Reading time6 min
Views4.4K
Систематизация означает создание процессов или предопределенного набора мер, которые предназначены для ускорения выполнения трудоемких и повторяющихся задач.

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

Получение id добавленной записи в PostgeSQL

Reading time1 min
Views62K
Каким бы супер-пупер спецом вы не были — в процессе разработки эпизодически попадаются интересные и удобные вещи о которых, казалось бы, давно бы пора знать, но все никак не складывалось. Этакий ништячок, найдя который хочется воскликнуть: «Эврика!». Вот таким ништячком для меня стал элемент синтаксиса INSERT в PostgreSQL, которым я и хочу поделиться с вами.

Ситуация: После добавления записи в базу нужно получить id этой самой свеже-вставленной записи.
Решение на PostgreSQL: INSERT… RETURNING id где id — это PRIMARY_KEY в таблице.

Просто и элегантно, не правда ли?
Читать дальше →

Как подружить фриланс и полную занятость?

Reading time4 min
Views2.3K

Пролог


В наше время в IT выделилось два способа взаимоотношений компании и сотрудников. Первый — найм людей на постоянную занятость, второй — использование фрилансеров. А возможно ли совместить положительные качества этих столь разных подходов, при этом избавившись от недостатков?

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

Подводные камни при использовании кэширования в nginx

Reading time10 min
Views58K
В web-сервер и reverse-proxy nginx встроены очень мощные возможности по кэшированию HTTP-ответов. Однако в ряде случаев документации и примеров не хватает, в результате не все получается так легко и просто, как хотелось бы. Например, мои конфиги nginx-а местами написаны кровью. Этой статьей я попробую немного улучшить ситуацию.

В этой статье: а) подводные камни при полностраничном кэшировании; б) кэширование с ротацией; в) создание динамического «окна» в закэшированной странице.

Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы применяете nginx+apache+mod_php, просто замените имена директив с fastcgi_cache* на proxy_cache*

Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о «высокой нагрузке». Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных.

Кэширование всей страницы целиком


Если на вашем сайте главная страница хоть и генерируется динамически, но меняется достаточно редко, можно сильно снизить нагрузку на сервер, закэшировав ее в nginx. При высокой посещаемости даже кэширование на короткий срок (5 минут и меньше) уже дает огромный прирост в производительности, ведь кэш работает очень быстро. Даже закэшировав страницу всего на 30 секунд, вы все равно добьетесь значительной разгрузки сервера, сохранив при этом динамичность обновления данных (во многих случаях обновления раз в 30 секунд вполне достаточно).
Читать дальше →

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Registered
Activity