Search
Write a publication
Pull to refresh
6
0
Rashad Khalafov @viperrsh

Head of DevDep

Send message

PHPLego: Горячие клавиши — атрибут hotkey

Reading time6 min
Views8.4K
PHPLego: PHPLego: Горячие клавиши - атрибут hotkey

Дорогие друзья! Сегодня я хочу поделиться с Вами 138-мью строчками кода, которые позволяют ссылки <a> и кнопки <input type='submit'> расширить атрибутом hotkey.

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

Подключив файлик hotkeys.js, который будет описан ниже, появляется возможность задавать горячие клавиши любым ссылками и кнопкам отправки форм вот так:
<a href='...' hotkey="Ctrl + Shift + D">удалить</a>
или
<input type='submit' hotkey='Ctrl + Enter' value='Отправить'>


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

YesterdayMe: опыт роста стартапа от 1 до 2000 активных пользователей

Reading time5 min
Views871
image В этом посте расскажу о собственном опыте создания и продвижения стартапа YesterdayMe.ru. Пост построю как перечисление наиболее значимых наблюдений и рекомендаций в ходе развития проекта, но намеренно не буду делать обширных выводов, чтобы уместиться в читаемый объем. Коротко, по делу, исходя из опыта первых семи месяцев работы сервиса.

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

Сегодня у сервиса около двух тысяч активных пользователей (пользуются сервисом хотя бы раз в неделю).

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

Разбираемся с prototype, __proto__, constructor и их цепочками в картинках

Reading time2 min
Views34K
Есть javascript код:
  1. var A = function () {};
  2. A.prototype.b = 100;
  3. var a = new A();
  4. A.prototype.c = 101;
  5. a.c = -100;
  6. A.prototype = {};
  7. A.prototype.b = 536;
  8. /* 1 */ console.log(a.__proto__.constructor.prototype.b === 536);
  9. var b = new A();
  10. /* 2 */ console.log(a.__proto__.__proto__.constructor === a.__proto__.constructor.prototype.constructor);
  11. /* 3 */ console.log(b instanceof A);
  12. /* 4 */ console.log(!(a instanceof Object));
Вопрос. Что возвратят выражения 1-4 и почему?

Затрудняетесь ответить?
Тогда вам стоит пройти под кат ;-) (Далее 600 Кб больших изображений)
Читать дальше

Фильтры: смерть регуляркам и правильная валидация

Reading time2 min
Views26K
Фильтры данных впервые появились в PHP 5.0, и по какому-то стечению обстоятельств остались незамечеными большй частью кодеров. Наверное, это можно объяснить отсутствием чего-нибудь подобного в PHP4, а может просто мануал плохо читали. Я тоже узнал про них случайно… А ведь эта замечательная функция позволяет избавиться от запутаных, и подчас некорректных, регулярных выражений, при выполнении типичных задач.
Мануал по фильтрам находится здесь. Приведу только основную информацию и пару практичных примеров.
Читать дальше →

Статический анализ: ошибки в медиаплеере и безглючная аська

Reading time8 min
Views1.7K
Продолжу экскурсию по ошибкам в программах и демонстрацию полезности статического анализа кода.

Это мой последний пост про пока недоступную для скачиванию версию PVS-Studio. Планирую, что через неделю вы уже сможете попробовать первую beta-версию с новым набором правил общего назначения.

Рассмотрим два проекта. Первый — Fennec Media Project. Это универсальный медиа-плеер ориентированный на воспроизведение аудио и видео в высоком разрешении. В комплект исходных кодов входит множество модулей расширения (plugins) и кодеков, но анализироваться будет только сам плеер. Исходный код последней на данный момент версии 1.2 Alpha доступен здесь.

Второй проект — qutIM. Это кроссплатформенный клиент мгновенного обмена сообщениями с открытым исходным кодом. Был проанализирован код на момент начала ноября 2010 года. Набор исходных кодов был предоставлен мне одним из разработчиков, но вы также можете скачать исходный код с официального сайта. Этот разработчик, кстати, присутствует здесь — gorthauer87.

Посмотреть на лики зла

Обзор свежих материалов, октябрь 2010

Reading time5 min
Views852
Этот материал продолжает серию ежемесячных обзоров свежих статей по теме интерфейсов, новых инструментов и коллекций паттернов, интересных кейсов и исторических рассказов. Из лент нескольких сотен тематических подписок отбирается примерно 5% стоящих публикаций, которыми интересно поделиться. Предыдущие материалы: апрельмай-июньиюльавгуст, сентябрь.


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

Защита PHP скриптов от копирования — это возможно?

Reading time4 min
Views42K
Бывает так, что вам неохота предоставлять исходные коды проектов, которые вы разрабатывали. Для этого можно использовать программы-обфускаторы, о которых недавно шла речь.

А бывает, что вам не так хочется закрыть исходный код, как защитить скрипт от копирования. На мой взгляд, сокрытие исходного кода, в большинстве случаев, не имеет смысла без защиты от копирования.
Читать дальше →

Пять способов показать выпадающий список в Asp.Net MVC, с достоинствами и недостатками

Reading time7 min
Views46K
В большинстве интродукций к Asp.Net MVC рассказывается о том, как красиво и просто организовать привязку модели к простым полям ввода, таким, как текстовое или чекбокс. Если ты, бесстрашный кодер, осилил этот этап, и хочешь разобраться, как показывать выпадающие списки, списки чекбоксов или радиобаттонов,
этот пост для тебя.

Web Dogma. 10 правил создания сайтов для пользователей

Reading time2 min
Views11K
image Сегодня мне случилось побывать на лекции Эрика Райса (Eric Reiss), специалиста по вопросам информационной архитектуры, юзабилити и user experience.

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

Лекция была посвящена набору правил (Эрик называет их догмой), следование которым позволит создавать сайты для пользователей, свободные от диктата технологий и моды.

Вот эти 10 правил.
Читать дальше →

MapReduce или подсчеты за пределами возможностей памяти и процессора (попробую без зауми)

Reading time8 min
Views92K
Давно хотел рассказать про MapReduce, а то как ни взгляшешь на подобное — такая заумь, что просто ужас берет, а на самом деле очень простой и полезный подход для многих целей. И реализовать самому — не так уж и сложно.

Сразу скажу — топик — для тех, кто не разобрался что такое MapReduce. Для тех, кто разобрался — полезного тут ничего не будет.

Начнем с того как собственно родилась лично у меня идея MapReduce (хотя я и не знал, что он так называется, и, разумеется, пришла она мне куда позже чем Гугловсцам).

Сначала опишу как она рождалась (подход был неправильный), а потом как надо правильно делать.

Как посчитать все слова в Википедии (неправильный подход)


А родилась она, как и, наверное, везде — для подсчета частоты слов, когда обычной памяти не хватает (подсчет частоты всех слов в Википедии). Вместо слова «частота» тут скорее должно быть «количество вхождений», но для простоты оставлю «частота».

В самом простом случае мы можем завести хеш (dict, map, hash, ассоциативный массив, array() в PHP) и считать в нем слова.

$dict['word1'] += 1

Но что делать когда память под хеш кончится, а мы посчитали только одну сотую всех слов?

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

Выход новой версии Code::Blocks IDE 10.5

Reading time1 min
Views8K
image

Пару дней назад вышла новая версия (после 2 лет разработки) достаточно популярной открытой IDE, написанной на С++ и wxWidgets — Code::Blocks. Основной язык разработки — C++. Существует система плагинов для расширения возможностей среды.
Читать дальше →

Выполнение SQL-подобных запросов над данными — как в браузере, так и на сервере

Reading time1 min
Views2K
Marak Squires выпустил в свет JSLINQ — реализацию LINQ для JavaScript, работающую как на стороне браузера, так и на стороне сервера (к примеру, node.js). Поддерживаются такие конструкции, как JOIN, UNION, RANGE, DISTINCT, COUNT etc.

Смотрите:
Читать дальше →

Mantis + Subversion у себя на компьютере с Windows XP. Пошаговая инструкция для удобной организации работы с кодом

Reading time6 min
Views5.7K

Исторически сложилось, что багтрекер в нашей команде – это Mantis. Для работы над ошибками очень хорошая и простая в обучении система. Буквально садись и работай. Но для удобной организации работы ей явно не хватает связки с Subversion. В связке Subversion+Mantis помогают организовать работу с кодом небольшой команды программистов. Более подробно про организацию работы у нас я описал в прошлой статье.
А сейчас давайте поговорим, как установить Subversion у себя на компьютере и связать его с Mantis на сервере.
Читать дальше →

«OOC для C, — это как Scala для Java»

Reading time7 min
Views2.3K
Сегодня на Hacker News наткнулся на пост о (похоже очень) новом языке "ooc". Бросил на день все дела, занялся ковырятельством — уж больно интересно выглядит.

Итак, "ooc — это современный, объектно-ориентированный, функционально(ватый), высокоуровневый, низкоуровневый, секси язык программирования". (Именно секси его и представляют разработчики, ну а я бы добавил что еще и "компилируемый")

По сути — ooc — транслятор языка высокого уровня в C со сборщиком мусора.

Как выразился один из посетителей сайта: "ooc для C, — это как Scala для Java" (jimbokun@HN).

Обязательный «Hello, World» на ooc:

hello.ooc:
"Hi, softer world =)" println()

на выходе hello.c и hello.exe.

ooc-компилятор транслирует это в c-код и использует доступный c компилятор (gcc, mingw, icc, tinycc) чтобы сделать из этого hello.exe (или ./hello). Поддержка tinycc заявлена, но в реальности ждем поддержки C99 в самом tinycc (автор обещал сделать обходные пути, но пока не работает), поэтому наслждаемся пока что довольно неслабого размера .exe'шниками (gcc от mingw других не делает).

Итак, что у нас уже есть в языке: классы, объекты, строгая типизация, угадывание типов (n := "Beer" length()), chaining (.dothis().dothat()), совместимость с c-библиотеками, абстрактные классы, шаблоны из C++, списки, разреженные(sparse) списки, хеши (ArrayList, SparseList, HashMap), for (i in list) { ... }, обертки для c-шных функций и классов, перегрузка операторов, полиморфизм, сборщик мусора (отключаемый), import file/name (не нужны .h, но .h можно использовать как extern), closures, eiffel's contracts, исключения, reflections, pattern matching, ranges, ternary operator, bindings, generics, coroutines, GTK, SDL, OpenGL, GLU, GLUT bindings…

Как сказал товарищ varjag@HN: «Я думаю это розыгрыш, сделанный пользователями Ruby, но нигде этого в тексте не вижу.» Нет, этот язык существует на самом деле. Примеры, линки, установка, подводные коряги — под катом…
Читать дальше →

Шустрая гляделка для Nautilus'а

Reading time3 min
Views4.1K
В своих бесконечных поисках найти быструю гляделку графических файлов, наткнулся на замечательную программу Gloobus, которая наверняка порадует счастливых обладателей нетбуков с Линуксом на борту. Сразу оговорюсь, затачивается все под файловый менеджер Nautilus, но никто не мешает прикрутить это чудо к чему угодно.

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

Mozilla Firefox + Aero

Reading time1 min
Views4K
Не так давно на Хабре писали про будущие версии FireFox и их обновленный внешний вид, включающий в себя поддержку эффектов Aero:
Screen

Но многие не знают, что такой внешний вид можно реализовать в уже выпущенных версиях.
Вариант 1:
Установливаем дополнение StrataGlass, включающее поддержку Aero у панелей браузера и, специально заточеную для этого, тему Strata40 (такая же как на скриншоте).
Для скрытия строки меню можно использвать HideMenuBar или более гибкий Personal Menu (позволяет добавить кнопки Tools и тд).
Читать дальше →

Создание своего Windows Service

Reading time7 min
Views89K
Я решил провести один эксперимент, суть его пока не могу разглашать, но по результатам обязательно опишу его))) Для этого эксперимента, мне нужно написать приложение которое работает как сервис в Windows.
Читать дальше →

Начинающим Java программистам

Reading time2 min
Views1.2M
Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:

Основные ресурсы для начального обучения


  • www.javable.com — сайт со статьями и tutorial'ом по Java. Все в основном на русском.
  • www.exampledepot.com — очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов
  • java.sun.com — без первоисточника не обойтись. Для любого Java программиста JavaDoc должен быть истиной в последней инстанции. Так же здесь можно найти серию tutorial'ов на все возможные темы.

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

Information

Rating
Does not participate
Location
Баку, Азербайджан, Азербайджан
Registered
Activity