Pull to refresh
0
0
Ден @MARDEN

User

Send message

КПК из GPS

Reading time1 min
Views1.4K

Ещё недавно держа некую сумму денег решил осуществить мечту — купить полноценный навигатор.
Но т.к. бюджет был маленький, выбрал подешевле — Nexx NNS-3501.
Всё было хорошо, вот только карты не ставились, а от iGo уже устаешь.
Я решил сделать из него полноценный КПК(но только без связи :))!
Начнём-с
Total votes 16: ↑12 and ↓4+8
Comments23

Навигация с помощью стрелочек, Javascript

Reading time2 min
Views2.4K
Мой друг starfake попросил опубликовать его пост. Недавно он оставил один неосторожный комментарий, за что был жестоко наказан сообществом :) Если пост вам понравится или даже будет полезен, прошу поднять ему карму.

Когда-то давно, прочитав в Лебедевском техногретте пост про навигацию стрелочками решил сделать такую же на форуме одного своего (с другом) проекта.
Сказано — сделано. Навигация стрелочками заработала, чему я очень обрадовался, но спустя некоторое время выявился небольшой баг. Находясь на текстовом поле, редактируя запись, вместо перехода с Ctrl между словами получаешь переход на следующую или предыдущую страницу (и удаление записи). Меня пару раз отматерили, а скрипт убрали.
Недавно мне нечего было делать на работе и я решил переписать его, учитывая фокус на форме.
Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments13

Набор горячих клавиш для работы с консолью

Reading time1 min
Views645
Если вы работаете с текстом в консоли, возможно правите какую-то конфигурацию на сервере под никсами, то возможно вам будет интересно и полезно узнать некоторые горячие клавиши, которые вы, вероятно, никогда не использовали.

Возвратится на начало текущей строки Ctrl + A
Возвратится в конец текущей строки Ctrl + E
Удалить слово назад Alt + BackSpace
Удалить слово вперед Alt + D
Переместить курсор к началу следующего слова Alt + F
Переместить курсор к началу предыдущего слова Alt + B
Удалить символ перед курсором Ctrl + D

Данные комбинации поддерживаются большинством никсовых систем, которые я использовал.

От себя я скажу лишь то, что открыл их совершенно случайно, когда довольно сильно привык к emacs. И, к слову, интересно было бы узнать побольше подобного рода комбинаций, которые используются наиболее часто.
Total votes 20: ↑13 and ↓7+6
Comments18

Ускорение загрузки Windows for fun and profit

Reading time4 min
Views803K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Total votes 532: ↑516 and ↓16+500
Comments365

Горячие клавиши Windows 7

Reading time2 min
Views150K
Предлагаю вашему вниманию список хоткеев, использование которых делает работу с Windows 7 ещё более удобной (в скобках — альтернативный способ сделать то же самое):

Управление окнами


  • Win+Home: Свернуть/развернуть все окна, кроме активного. («Потрясти» окно)
  • Win+Space: Сделать все окна прозрачными. (Задержать курсор над небольшой кнопкой в правом нижнем углу экрана.)
  • Win+Up: Развернуть активное окно на весь экран. (Перетащить окно вверх до упора, или дважды кликнуть по верхней рамке)
  • Win+Down: Свернуть активное окно или восстановить размер, если оно развёрнуто на весь экран
  • Shift+Win+Up: Развернуть окно по высоте (Перетащить нижнюю границу окна до таскбара)
  • Win+Left/Right: Занять окном левую/правую половину монитора, или восстановить размер (Перетащить окно влево/вправо до упора)

больше хоткеев!
Total votes 54: ↑27 and ↓270
Comments18

Мой минимальный набор приложений для Android

Reading time3 min
Views18K
Ехала я как-то с работы на прошлой неделе, сидела в инете со своего мобильного телефончика, и поняла, что хватит — пора бы коммуникатор приобрести. Особо ими никогда не интересовалась и не увлекалась. Вообщем, ничего особо и не знала. Зашла в первый попавшийся магазин и купила HTC Hero. Меня многие потом конечно ругали, что зачем Hero взяла, надо было Legend или Desire уже брать, ну и так далее, но так как это был мой первый коммуникатор, то мне и с Героем было с чем поразбираться и поиграться.
Вот хочу опубликовать мой набор программок, которые сейчас стоят у меня на HTC. Перепробовала много разных, и вот те которые мне понравились из представленных в разных категориях.
1. Так как я много сижу в интернете через gprs, то 3G Watchdog. Программа для контроля интернет-трафика, есть возможность установить лимит по трафику на определенный промежуток времени, при приближении к которому, программа выдаст предупреждение. Существуют виджеты.
Читать дальше →
Total votes 156: ↑99 and ↓57+42
Comments164

Cookies внутри iframe — проблема при создании приложения ВКонтакте/Facebook

Reading time5 min
Views56K
Управление сессиями при помощи посылки cookies на сайтах стало настолько распространено, что без этого не обходится, наверное, ни один проект, требующий авторизации пользователей. Казалось бы, механизм настолько изучен, что проблемы с ним просто немыслимы.

Так считали и мы при разработке iframe-приложения для ВКонтакте.
Но после того, как приложение было разработано (разработка велась в основном в Mozilla Firefox и Google Chrome), выяснилось, что оно неработоспособно в Internet Explorer, к которому позднее присоединились последние версии Opera и Safari.

Под катом подробное описание проблемы и вариантов её решения.
Читать дальше →
Total votes 59: ↑54 and ↓5+49
Comments45

Пиратская локализация. Как это было

Reading time4 min
Views9K
Так уж вышло, что мне довелось стоять, можно сказать, у истоков так называемой “пиратской локализации” игр на территории бывшего СССР. Многие ее ругают, многие привыкли и воспринимают это явление как должное. Я попробую рассказать, как все это начиналось и вкратце поделиться своим немалым опытом.

Итак, за окном шел дождь, и календарь отсчитывал 1991 год…
Читать дальше →
Total votes 418: ↑411 and ↓7+404
Comments210

Вариант PHP кода для вывода строки в множественном числе

Reading time9 min
Views868
Как обычно для интернационального проекта понадобилась функция для вывода слова в различных вариантах множественной формы.
Проект уже имеет собственный вариант загрузки языков, так что использование стандартного gettext привело бы к изменению большой части кода.

Так что была написана функция, которая для поддерживаемого набора из 27 языков реализовывала необходимый функционал.

Её код представлен ниже.

Читать дальше →
Total votes 9: ↑4 and ↓5-1
Comments20

Как открыть компьютерный интернет-магазин

Reading time5 min
Views20K
Приветствую Хабро-сообщество.

Прошу не судить строго за пост, во-первых это проба пера на этом сайте, во-вторых — это всего лишь собственный опыт, который вполне возможно не является идеалом для копирования, но возможно станет для вас базой для того чтобы делать лучше.
Читать дальше →
Total votes 132: ↑121 and ↓11+110
Comments136

qJerry: пиши меньше, делай больше. Теперь на PHP.

Reading time3 min
Views887
Как-то незаметно на Хабре прошло появление в свет интересной, на мой взгляд, библиотеки.

О библиотеке qJerry


qJerry — это библиотека для работы с XML-документами, написанная на языке PHP. Основная миссия qJerry — сделать работу с XML комфортнее, чем позволяют стандартные средства PHP, такие как расширение DOM.
Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments19

Создание системы авторизации в высоконагруженном проекте с использованием MemcacheDB

Reading time4 min
Views1.8K
Здравствуйте!

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

Где хранить аутентификационную базу пользователей?
Как быстро авторизовать пользователя по его строковому логину?
Как собирать распределенные по нескольким шард-таблицам и нескольким базам данных пользовательские данные?
Как заставить все это работать и как в этом нам может помочь MemcacheDB?

Читать подробности
Total votes 17: ↑17 and ↓0+17
Comments31

И ещё немного о input file

Reading time2 min
Views1.9K
Вопрос о стилизации <input type=«file» /> настолько стар, что наверное только ленивый не пробовал собственную реализацию этого, несомненно, важного в web дизайне элемента.
Однако, в большинстве своём, решения очень не однозначны и зачастую предлагают примерно следующие варианты:
  • Наложить файл инпут поверх картинки и сделать его прозрачным.
  • Использовать flash.
При этом, в первом случае, чтобы всё работало относительно одинаково во всех браузерах, предлагается «спорные области» — те что в одном браузере являются активными для нажатия, а в другом неактивными — закрыть, например, наложив сверху <div></div>. Стоит ещё добавить, что тут же используется значительное количество css со всяческими отрицательными отступами и float`ами.
А во втором случае мы имеем ряд не удобств связанные с активацией flash элементов (например в IE), а лично у меня (и думаю у всех, кто в ФФ использует Add Block Plus дополнение) кнопочка block совсем не красит флешевый инпут файл.

Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments22

Аналог LIMIT в MSSQL

Reading time1 min
Views39K
Так уж сложилось что MSSQL не имеет своего аналога функции LIMIT в MySQL (за исключением TOP). Но достаточно часто возникает необходимость выбрать определенный интервал значений не с первого а например с 1000-го.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments6

Совершенно случайные числа без повторения

Reading time1 min
Views3.5K

Задача


Сегодня столкнулся с задачей сделать 4 случайных числа в заданном диапазоне, без повторения, казалось бы такая тривиальная задача, но!
Обычное rand($min, $max) не давало нужного результата, особенно при малом числе $max ~ 15;
То есть:

$number[0] = rand(1, $max);
$number[1] = rand(1, $max);
$number[2] = rand(1, $max);
$number[3] = rand(1, $max);


Могло в итоге выдать 2, 2, 3, 9 — эти повторения мне нужны не были, спросив совета на хабраканале, freefd дал ссылку на перловый вариант cookbook, но реализация мне не понравилась своей громозкостью и нелапидарностью.

Решение


В итоге проявив смекалку появилось вот такое решение:

function generateFourRandomNumber ($maxCount){
$numbers = range(1, $maxCount);
shuffle($numbers);
return array($numbers[0], $numbers[1], $numbers[2], $numbers[3]);
}


Итого


Вуаля! Просто лапидарно, и даже странно :)
несколько НО:
  • решение подходит для малых максимальных значений, иначе потом shuffle будет стоить слишком дорого
  • функцию легко переделать по вид generateRandomNumber ($maximum, $count)


UPD


Спасибо duncanf1 за еще более короткий вариант:
function generateRandomNumber ($maximum, $count){
return array_rand(range(0, $maximum), $count);
}
Total votes 18: ↑9 and ↓90
Comments23

Рыба коммерческого предложения от P&G

Reading time2 min
Views3.9K
В компаниях-дистрибьюторах Проктэр энд Гэмбл есть простой и довольно эффективный алгоритм для написания коммерческих предложений. Он не безупречен, зато ему можно научиться всего за несколько дней. Этот подход часто хорошо подходит и для других документов — от служебных записок до деловых писем.

Алгоритм включает в себя 5 шагов:

1. Описание исходной ситуации.
  • Ориентирует, к чему, собственно, относится предложение.
  • Служит предпосылкой, исходными данными для логического обоснования предложения.
  • Показывает клиенту, что КП написано персонально.
  • Провоцирует «да-реакцию».

Важно очень коротко, в нескольких предложениях описать только те вещи, которые имеют отношение к делу. Например, если мы хотим разместить леденцы в прикассовой зоне — то в описании исходной ситуации мы отметим, какой товар сейчас продается в прикассовой зоне, в каких объемах и с какой наценкой.

2. Суть предложения.
  • Приковывает внимание; если клиент согласен с предложением, то он будет читать дальше, чтобы узнать подробности и предлагаемые действия; если клиент не согласен — то он захочет выяснить, с чего вдруг это предлагается и зачем ему это надо.
  • Позволяет клиенту быстрее понять изложенные дальше преимущества и действия.

Предложение здесь описывается без подробностей, объяснений, оправданий, детализации, амортизации и прочего гламура. Никаких «мы предлагаем совестными усилиями в процессе совместного плодотворного сотрудничества посредством интеграции инфраструктуры управления товарными запасами…»; должно быть просто до примитива, например, «Вы даете нам оперативную информацию о продажах — мы формируем оптимальный заказ» или «В прикассовой зоне вместо презервативов надо продавать наши леденцы».

3. Преимущества для клиента.
Задача этого шага очевидна — нужно замотивировать клиента принять это предложение. Вот здесь уже можно выражаться чуть более дипломатично и многословно. В перечислении преимуществ важно не упустить каких-то вещей, которые кажутся самоочевидными. Например, для вашей компании может подразумеваться, что при поставке товар размещается на стеллажах склада силами ваших сотрудников — для клиента это может быть менее очевидно. Обычно стоит выделить 3—5 преимуществ.

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

5. Первый шаг.
Эту часть часто недооценивают. Что должен сделать клиент в первую очередь, чтобы это КП претворилось в жизнь? Согласовать текст договора? Позвонить вам, если согласен в течение недели? К завтрашнему дню, когда вы обещали позвонить, уточнить со своим логистом возможности перебросок с оказией дополнительных партий по городам области? Надо подумать и спланировать это за клиента.

***

Все это должно влезть меньше, чем на одну страницу. Не нужно сюда пытаться влепить прайс на 500 позиций или любимые цитаты из договора — все это можно вольготно разместить в приложениях.
Total votes 12: ↑11 and ↓1+10
Comments5

Поисковое API для PHP (Flash, Java и других)

Reading time5 min
Views6.6K
Задача: организовать поиск по всему сайту затратив как можно меньше усилий и оформить результаты в своем стиле.

Рассуждение
Есть различные серверные системы для организации полнотекстового поиска индексируя сайт, индексирую базу данных. Но их надо устанавливать на своем сервере, настраивать, а некоторые из них еще и платные.
В какой-то момент решил воспользоваться Google Ajax Search API через JavaScript, но тут вид результатов менять достаточно сложно, да и еще надо делать запросы в другой домен при помощи javascript.

Решение
В итоге набрел на странице Google AJAX Search API в раздел Code Snippets и все стало просто: немного кода на php и полнотекстовый поиск по любому сайту готов.

Пример кода с комментариями
Total votes 22: ↑14 and ↓8+6
Comments6

Превью и Resize картинок на лету

Reading time5 min
Views2.3K
Переделывал сайт заказчику на Netcat и с удивлением обнаружил, что кто-то ещё использует загрузку отдельных картинок для оригиналов и для превьюшек и как следствие отдельные столбцы в таблице БД. Куда ещё не шло создавать превьюшки на стороне сервера после загрузки оригинала.

Идея простая и не новая. C таким подходом я в первые столкнулся в UMI-CMS, а использовал в RubyOnRails. Смысл в том, что превью создаются только когда они нужны и какого угодно размера, а В БД храниться только название оригинала.

Если Вам необходимо вывести превью картинки вы вызываете функцию типа:
  1. @thumbs = Photo.view_thumbs('originals_name_file.jpg', '100', 'auto')
где второй и третий параметр это нужный размер в пикселах (auto значит автоматическая подгонка под массштаб).

Метод view_thumbs проверяет в папке (например "/images/cache") наличие файла originals_name_file_100xauto.jpg. Если находит то возвращает строку «originals_name_file_100xauto.jpg», если не находит, то создаёт файл нужных размеров на лету и возвращает то же самое.

Достоинства подхода очевидны:
  1. Не создаётся мусора в виде большого количества превьюшек на диске. Все превью храняться в одной папке «cache» и могут периодически удаляться для освобождения места.
  2. Неограниченное количество превьюшек разных размеров. Достаточно только задать нужные параметры в методе.
Для cakePHP есть хелпер images.php который можно выдернуть из Bakesale (автоматической подгонки нет). Ниже представлен метод на RubyOnRails реализующий данный подход.
Читать дальше →
Total votes 6: ↑4 and ↓2+2
Comments14

Как сделать подключенный к Стриму домашний комп веб-сервером

Reading time4 min
Views2.9K
Pre-Scriptum: насколько я знаю, некоторые из моих статей постились кем-то в Хабр, я же здесь всего второй день. Поэтому извиняюсь, если этот пост покажется вам «бояном». Чтобы меня не обвиняли в плагиате, приведу ссылку на оригинал моей статьи. Вообще же я собираюсь писать в своем хабра-блоге в основном на тему носимых компьютеров. Над одним из подобных устройств я работаю второй год. Собственно, приведенные ниже действия были направлены на создание «внешних мозгов» моему НК (носимому компу), чтобы тот мог передавать какие-то задачи на домашний комп или брать с него данные.

Итак, начнем…
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments9

Обработка фотографий текста с помощью Gimp

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

В качестве материала для обработки я взял эту страничку(Предварительно обрезав всё лишнее):
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments4

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity