Pull to refresh
2
0
Hamlet Muradyan @m_hamlet

Senior Software Developer

Send message

Социальная архитектура: что нужно, чтобы соцсеть не умерла сразу после рождения?

Reading time7 min
Views14K
Сначала писать в сети было сложно, потому что нужно было обладать определённой грамотностью. Потом писать стало легко. Прошло ещё какое-то время, и информации стало настолько много, что возник хаос. Этот хаос породил спрос на софт, позволяющий организовывать окружающую информацию: отсекать лишнее и показывать главное. Людям сейчас нужна такая штука, которая помогает побороть все потоки данных из сети — и при этом не терять важные вещи по работе, в том числе в группе.


Примерно так обычно представляют корпоративную социальную сеть

Наверняка вы знаете примеры таких вещей: это удобные трекеры, удобные системы совместной работы над кодом, RSS-читалки и так далее. Всё это – средства, которые превращают кучу источников информации в организованную структуру. Главные из них — это соцсети: они дают значимую и интересную для вас информацию.

В прошлом месяце Росс Мейфилд выступал с лекций в Digital October, в которой рассказывал о том, как продумывать архитектуру сети, как делать так, чтобы людям там нравилось, и как инициировать живое общение. Заодно он обяснил что не так с G+ и зачем Фейсбуку понадобился Instagram.
Читать дальше →
Total votes 36: ↑25 and ↓11+14
Comments12

Масштабирование нагрузки web-приложений

Reading time6 min
Views60K
С ростом популярности web-приложения его поддержка неизбежно начинает требовать всё больших и больших ресурсов. Первое время с нагрузкой можно (и, несомненно, нужно) бороться путём оптимизации алгоритмов и/или архитектуры самого приложения. Однако, что делать, если всё, что можно было оптимизировать, уже оптимизировано, а приложение всё равно не справляется с нагрузкой?
Читать дальше →
Total votes 109: ↑98 and ↓11+87
Comments38

Генератор/валидатор паролей по результатам взлома LinkedIn

Reading time5 min
Views10K
После анализа подобранных паролей к LinkedIn появилась идея создать генератор паролей, совмещенный с валидатором, не допускающим легко подбирающиеся пароли. Простейшего анализа на длину, наличие специальных символов здесь не достаточно — некоторые пароли можно легко собрать из очень вероятных «кусочков» и на их перебор уходит существенно меньшее время, нежели теоретически заявленное. И гарантий, что программа-генератор не выдаст вам подобный пароль нет — случайность, она на то и случайность. Мое творение не претендует на полное решение вопроса, скорее это повод для размышлений, но оно вполне работоспособно (исходники и небольшой разбор тоже присутствуют).
Читать дальше →
Total votes 66: ↑59 and ↓7+52
Comments60

Yii расширяем CHtml для работы с текстовыми полями

Reading time6 min
Views13K
Всем привет. Сейчас занимаюсь написанием очередного проекта на Yii и хотел бы поделиться кое-какими наработками. В этой статье я хотел бы описать, каким образом можно расширять функциональность фреймворка с помощью наследования классов CHtml, CActiveForm. Тут нет ничего сложного и инновационного, я просто хотел бы поделиться этим. Моя задача состояла в том, чтобы создать 2 элемента:
  • Текст, который при нажатии превращается в input
  • Блок, имеющий определенную ширину, в который может не поместиться весь необходимый текст, но при наведении появляется подсказка


Вот пример результата работы следующего кода (код после хабраката):

image
Читать дальше →
Total votes 13: ↑9 and ↓4+5
Comments12

HTML5: Доступ к батарее через javascript

Reading time4 min
Views6.5K
HTML5 спецификация наполняется и медленно начинают появляться API, позволяющие получать информацию об устройстве, на котором запущено приложение. Одним из последних является Battery Status API. Как вы уже догадались, API позволяет получить информацию о батареи используя javascript. Так что теперь у вас есть возможность отключиться тяжелую анимацию на вашей странице, предложить пользователю сохранить данные или самому активно ее сохранять в локальное хранилище. Рабочий пример вы можете найти здесь. Следует заметить, что свойство «Battery time left», было недоступно, когда я открыл страницу. Но оно обновилось через пару минут.

Я тестировал это API с последних бета-версий Mozilla и оно пока не работает на Mac (но работает на iOS, Android и Windows). Так же мне не удалось получить положительный результат статуса зарядки, зато время разрядки и уровень батареи работали корректно. В этом маленьком примере мы просто отобразим информацию из API на простенькой странице, как эта (скрин из моей таблетки):



В этой статье мы рассмотрим:

  • Использование Battery API
  • Создание полей, для отображения информации из API
  • Создание картинки для отображение статуса батареи
  • Использование eventListener для обновления информации
Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments35

Простая замена phpMyAdmin для гиков

Reading time2 min
Views14K
Довольно часто возникает ситуация, когда надо быстренько запустить пару запросов к MySQL базе у клиента на сервере. При этом есть только FTP и параметры соединения с СУБД. Самый простой выход — загрузить туда phpMyAdmin, ну а дальше дело техники. Обычно все это проиcходит на фоне того, что у клиента уже установлена какая-то CMS — WordPress, Drupal, Joomla…

Я люблю простые, красивые и удобные вещи. Я тепло отношусь к phpMyAdmin но в 90% моих Use Cases мне он не нужен. Нужно что-то простое. В идеале такое, что можно просто залить на сервер и открыть в браузере — не настраивая.

Пара вечеров и пакет готов.
Читать дальше →
Total votes 120: ↑114 and ↓6+108
Comments116

Mozilla Shumway — open source конвертер SWF в HTML5

Reading time1 min
Views9.3K
Под аккаунтом Mozilla на github стартовала разработка open source проекта Shumway — это технологический эксперимент, в рамках которого исследуются возможности рендеринга SWF без использования нативного кода, то есть средствами HTML5 и JavaScript.

Mozilla надеется, что подобный инструмент всё-таки будет создан и будет использоваться повсеместно как всеобщий открытый стандарт для парсинга и рендернига Flash-анимации. Интеграция с Firefox возможна, если эксперимент окажется успешным.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments27

Генерация случайных чисел с помощью Random.org

Reading time3 min
Views142K
Кто пытается арифметическими методами генерировать случайные числа, тот, конечно, живет во грехе.
— Джон фон Нейман

Есть такой хороший сервис random.org, который уже не раз упоминался на хабре. Основная задача сайта — генерация случайных чисел с использованием атмосферных шумов. На том же сайте можно найти результаты тестов и сравнения случайных и псевдослучайных генераторов с объяснениями что лучше и почему. В данной статье описывается простенькая библиотека для использования API сайта.

Читать дальше →
Total votes 53: ↑51 and ↓2+49
Comments82

Удаленный доступ при динамическом IP или Настраиваем DynDNS в Linux

Reading time2 min
Views156K
Оговорки:
— писалось как пособие для начинающих.
— способ не подходит для "серых" IP.

Удаленно управлять рабочим столом можно с помощью TeamViewer. Однако, например, для управления домашним ПК с Linux на борту, если необходима только правка конфигов или работа с файлами, а не с X-приложениями, проще всего использовать ssh. Но как быть, если IP удаленной машины постоянно меняется? В таком случае поможет сервис DynDNS. Принцип его действия прост: сервис создает для вас определенный домен, а ваш компьютер с помощью этого сервиса присваивает домену текущий IP-адрес.
Читать дальше →
Total votes 24: ↑15 and ↓9+6
Comments25

Защита веб-сервера Apache от атаки медленного чтения, а так же некоторых других направленных атак

Reading time3 min
Views47K
Приветствую.
Хочу поделиться опытом защиты веб-сервера Apache от атаки медленного чтения. О том, что это за атака можно почитать тут (английский), а так же тут (русский).

Рассмотренный способ позволяет обезопасить работу сервера с помощью расширений mod_evasive и mod_security, а главное — требует менее получаса времени на реализацию. Настройка производилась на Ubuntu версии 12.04 + Apache 2.2. Настройка для других версий веб-сервера, а так же для других операционных систем отличается, в основном, особенностями установки программных пакетов и, собственно, версиями устанавливаемых программ и модулей для них.


Читать дальше
Total votes 15: ↑14 and ↓1+13
Comments16

gmaps.js — самый легкий способ использования Google Maps API

Reading time2 min
Views48K
Привет!

Расскажу об одной небольшой (~30kb) JS библиотеке для удобной работы с Google Maps API под названием gmaps.js.
Раз уж библиотека создана для ускорения процесса веб-разработки, то и я вас задерживать не буду. Как можно понять из названия, она делает не что иное, как упрощает взаимодействие с API Google Maps. Многие из вас работали с API и, вероятно, каждый раз вам приходилось попотеть, чтобы порыться в документации и реализовать, например, свое собственное описание метки на карте. Или подписаться на событие взаимодействия с картой…
Читать дальше →
Total votes 94: ↑89 and ↓5+84
Comments24

Класс для реализации UNIX-демонов на PHP

Reading time5 min
Views2.4K
Ну начнем с того, что довольно часто приходится сталкиваться с тем, что необходимо реализовывать какую-либо серверную часть для обработки каких-то данных и т.д. Естественно, что сервеную часть удобней всего было бы реализовать в виде демона. В свое время я наткнулся на подобный класс реализации демонов написанного на Python. И вот на прошлой неделе решил написать такое же творение на PHP, вроде получилось не плохо, оценивать Вам.
Читать дальше →
Total votes 56: ↑46 and ↓10+36
Comments102

Практическая оптимизация и масштабируемость MySQL InnoDB на больших объёмах данных

Reading time5 min
Views20K
Данный пост не будет рассказывать про индексы, планы запросов, триггеры для построения агрегатов и прочие общие способы оптимизации запросов и структуры БД. Так же не будет рассказывать про оптимальные настройки с префиксом innodb_. Возможно прочитав текст ниже вы лучше поймёте смысл некоторых из них. В данном посте речь пойдёт об InnoDB и его функционирование.

Какие проблемы может помочь решить этот пост?


  • Что делать если у вас в списке процессов множественные селекты которым казалось бы никто не мешает?
  • Что делать если всё хорошо настроено, запросы пролетают как ракеты и список процессов постоянно пустой, но на сервере высокий LA и запросы начинают работать немного медленнее, ну например вместо 100мс получается 500мс ?
  • Как быстро масштабировать систему, когда нет возможности всё переделать?
  • У вас коммерческий проект в конкурентной среде и проблему надо решать немедленно?
  • Почему один и тот же запрос работает то быстро то медленно?
  • Как организовать быстрый кеш и поддерживать его в актуальном состояние?

Читать дальше →
Total votes 45: ↑39 and ↓6+33
Comments46

Некоторые тонкости установки на сайт кнопок «Поделиться» (share) социальных сетей

Reading time5 min
Views205K
Сегодня, в эпоху социальных медиа, принято давать посетителям сайта возможность поделиться с друзьями. Мы делали промо-страницу к Дню Рождения интернет-магазина Allsoft и нам нужно было установить кнопки «Поделиться» от Facebook, Twitter, Одноклассников, Вконтакте и Мой мир.

С первого взгляда показалось — что может быть тут особенного — поставил готовый html/js код и готово? Но тонкости оказались в деталях: что если для одной соц. сети нужно передавать один текст, а для другой — другой? Как правильно передать картинку и описание во все сети? А если несколько разных вариантов текста и картинок на одной странице? Как почистить уже закешированную информацию о ссылке в соц.сети? На все эти вопросы нам пришлось найти ответы, которые и вы сможете узнать из этой статьи.
Читать дальше →
Total votes 74: ↑59 and ↓15+44
Comments44

Проблема модификации даты через strtotime

Reading time1 min
Views19K
Добрый день хабравчане.

Хочу поведать вам о небольшой проблеме с вычислением даты функцией strtotime.

Суть в следующем. Мне нужно было получить название предыдущего месяца. Ничего сложного в этой задаче нет:
$t = strtotime('-1 month');
echo strftime('%B', $t);

В большинстве случаев этот вариант отлично подходит. Но не сегодня.
Читать дальше →
Total votes 65: ↑45 and ↓20+25
Comments60

UI-Ai: Рисуем интерфейс в Adobe Illustrator

Reading time7 min
Views145K
На презентации Adobe CS6 в Самаре я делал доклад о том как мы в компании Parcsis используем Adobe Illustrator для создания веб- и мобильных интерфейсов. Хочу поделиться этим докладом с вами в виде слайдов с комментариями.

Рисуем интерфейс в Adobe Illustrator

Когда показываешь свои работы, зачастую начинающие дизайнеры задают вопрос «А в чем это нарисовано?» Опытные дизайнеры спрашивают такое реже, так как понимают, что одно и тоже можно сделать с помощью разных графических редакторов. Тем не менее, расскажу свою историю…

Читать дальше →
Total votes 173: ↑162 and ↓11+151
Comments155

Визуализация «В Контакте»: Скажи мне, кто твой друг?

Reading time2 min
Views145K
Привет, Хабралюди!

У меня есть хобби. Я ночами (в нерабочее время) пишу библиотеку укладки графов: vivagraph.js. Хотел поделиться с вами, узнать что думаете. Визуализировал я сеть друзей своих на «В Контакте» с использованием WebGL. Но лучше один раз увидеть, чем читать, верно?



Это мои друзья. Каждая точка — человек, целый мир, с которым так или иначе мне повезло встретиться. Линия между точками обозначает дружбу. По этой сети можно, правда, сказать многое о человеке.

Как построить свою сеть?
Total votes 314: ↑302 and ↓12+290
Comments256

Риалтайм дашборд

Reading time7 min
Views5.6K

Однажды, сидя поздним вечером на работе, захотелось сделать простенький шустренький дашборд, который бы отрисовывал графики ошибок или других варнингов из логов Apache или Ngnix. Термин Realtime слегка льстит, в действительности мы видим обновление на графике каждые 3 секунды. Такого плана дашборд, очень полезен особенно когда идет выкатка новой версии в бой, сидишь и смотришь как она тихонечко расползается по серверам, изменяя направления кривых на графике.
Читать дальше →
Total votes 44: ↑40 and ↓4+36
Comments41

Как правильно писать статьи о программировании для начинающих

Reading time5 min
Views10K
В последнее время на Хабре стало появляться довольно много статей о тех или иных аспектах программирования, которые позиционируются как статьи для «начинающих». Между тем, как раз для начинающих эти статьи часто являются непонятными: иногда — слишком сложными, иногда — не отвечающими на те вопросы, на которые должны, иногда — тяжелыми для восприятия.

Попробуем разобраться, как должна быть написана статья, если вы хотите, чтобы она не только понравилась, но и была полезна читателям.
Читать дальше →
Total votes 163: ↑144 and ↓19+125
Comments68

QScintilla: подсвечиваем синтаксис в приложении

Reading time3 min
Views11K
Привет, $username!

UPD: вторая и третья часть цикла о QScintilla.

Сегодня я хочу рассказать вам про отличный проект — QScintilla, который подсвечивает синтаксис кода в Qt-приложениях. Нередко возникает необходимось что-то подсвечивать. Например: C++, Bash, PHP, Diff… Этот список можно продолжать и продолжать. Но вот решение: порт Scintilla на Qt: QScintilla.

В этом посте я расскажу как установить и пользоваться QScintilla в своих приложениях на примере Ubuntu Linux.
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments28

Information

Rating
Does not participate
Location
Yerevan, Yerevan, Армения
Date of birth
Registered
Activity