tag:blogger.com,1999:blog-61622405023723915322023-04-14T17:14:48.226+03:00Быстро и кратко, полно и точно - Ruby on Rails, PHP, MySQL, CodeIgniter, JQueryОсновная задача блога - стать стартовой платформой для начинающих разработчиков, здесь не только буду писать свои статьи, но также буду выкладывать полезные ссылки которые помогут разобраться в разных вопросах. Будут затронуты темы: Ruby on Rails, PHP, MySQl, CodeIgniter, JQuery.userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.comBlogger138125tag:blogger.com,1999:blog-6162240502372391532.post-27119704798238044252014-08-13T11:32:00.002+03:002014-11-12T16:11:39.989+02:00Erlang. Аналог InArray. Как проверить вхождения элемента в список
Как проверить вхождение элемента в список? Документация
List = [1,2,3,4,5,6],
lists:member(1,List) => true
lists:member(8,List) => false
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com1tag:blogger.com,1999:blog-6162240502372391532.post-33741264066159779752014-07-09T12:44:00.003+03:002014-07-09T12:45:06.092+03:00Так выглядит код с хаками
Именно так выгладит код с хаками!
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-53225067713022016682013-09-30T17:36:00.000+03:002013-09-30T17:37:09.952+03:00Erlang. Gproc просмотреть все значения
Как посмотреть что хранится в gproc, не зная ключей:
Просмотреть все локальные записи:
gproc:select({global,all},[{'_',[],['$$']}]).
[[{p,g,foo},<0 .37.0="">,bar]]
Просмотреть все глобальные записи:
gproc:select({local,all},[{'_',[],['$$']}]).
[[{p,l,foo},<0 .37.0="">,bar]]
Просмотреть все записи:
gproc:select({all,all},[{'_',[],['$$']}]).
[[{p,g,foo},<0 .37.0="">,bar],[{p,luserfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-16999191316556823732013-07-15T16:21:00.002+03:002013-07-15T16:26:03.917+03:00Erlang. Ротация логов для aloger. Log rotation for alogger
Пример конфигурации приложения на Erlang c alogger
Нужно разбивать логи по размеру 1 гигабайт, хранить 10 файлов.
my-app.config:
...
,{alog, [
{enabled_loggers, [alog_tty, alog_disk_log]},
{install_error_logger_handler, true},
{flows, [
{{mod, ['_']}, {'=<', debug}, [alog_tty, alog_disk_log]}
]},
{alog_tty, []},
{alog_disk_log, [{name, userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-30229746534409794492013-04-05T11:25:00.002+03:002013-04-05T11:25:44.525+03:00Документация по Ejabberd
В этом посте, я поделюсь ссылками на документацию по Ejabberd, нужными спецификациями по протоколу XMPP и ссылками на всевозможные примеры реализации логики (список будет расти). Основная цель - собрать вместе разрозненные данные по Ejabberd.
Документация:
Список событий и хуков: Events and hooks
IQ обработчики: IQ handlers
Основные модули: Core modules
Спецификации:
XMPP userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-23574460600599258782013-02-26T12:38:00.001+02:002013-02-26T12:52:27.154+02:00Js. Как разбить длинную строку на куски заданного размера
Задача: есть длинная строка, ее нужно разбить на куски по N символов.
Решение:
str.match(/.{1,N}/g);
Пример 1:
str = 'qwertyuiopasdfghjklzxc';
str.match(/.{1,10}/g);
Результат: ["qwertyuiop", "asdfghjklz", "xc"]
Пример 2:
str = 'qwertyuiopasdfghjklzxc';
str = '1234567890';
n = 5;
re = new RegExp(".{1,"+n+"}", "g");
str.match(re);
Результат: ["12345", "67890"]
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com3tag:blogger.com,1999:blog-6162240502372391532.post-45492867236020519482013-01-24T17:12:00.000+02:002013-01-24T17:13:35.119+02:00Ubuntu. Убить процессы по имени.
Для того чтобы убить все процессы по части имени нужно сделать так:
ps aux | grep -e 'somename' | grep -v grep | awk '{print $2}' | xargs -i kill {}
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com3tag:blogger.com,1999:blog-6162240502372391532.post-52837108510105928642012-11-05T11:40:00.000+02:002012-11-05T11:50:11.462+02:00Запуск приложений Ubuntu с правами администратора
Если нужно запустить приложение из под терминала, используем команду sudo:
$ sudo mc
В консоли вас попросят ввести пароль суперпользователя. Все бы хорошо, но если вы таким образом попробуете открыть графическое приложение, например gedit, то оно будет привязано к родительской консоли: если закрыть консоль - графическое приложения закроется.
Чтобы не держать для каждого приложения userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-19772558969061142942012-10-29T15:24:00.000+02:002012-10-29T15:33:57.688+02:00Как узнать версию ejabberd
ejabberd - XMPP сервер, написанный на Erlang. Узнать версию установленную в системе можно так:
1. Если остались файлы дистрибутива, то версию можно узнать по имени пакета ejabberd-x.x.x
2. Найти в системе файл ejabberd.app и найти там строку вида: {vsn, "x.x.x"}
3. Если у вас нет доступа к системе, но нужно открыть в XML-консоль (например в QIP, Miranda) и послать серверу командуuserfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-67441730515423928602012-10-25T15:45:00.003+03:002012-10-26T11:22:05.300+03:00XML Viewer. Удобный просмотр XML
Столкнулся с задачей - нужно просматривать большие логи в формате XML. Естественно, что логи в файле не форматированы, а идут одним сплошным потоком, который нереально читать.
1. Если вы уже используете какую-то из JetBrains IDE, то нажмите Ctrl+Alt+L (или через меню: Code->Reformat Code)
2 . Еще есть простая бесплатная программа Free XML Editor:
Пример просмотра документа:
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-58079163165245929662012-10-24T11:02:00.000+03:002012-10-24T11:02:12.704+03:00VirtualBox. Настройка общих папок для Ubuntu
Основная ОС: Windows 7
VirtualBox ОС: Ubuntu 12.04
Задача: настроить общие папки
1. Создаем папку "d:/share" под Windows 7.
2. Открываем настройки VirtualBox, находим в меню пункт "Общие папки" и добавляем там нужную:
3. Заходим на виртуальную машину, и в папке вашего пользователя, создаем новую папку, ставим нужный уровень доступа:
username@your_server:~# mkdir shared
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com9tag:blogger.com,1999:blog-6162240502372391532.post-54971557990342267772012-09-03T16:49:00.000+03:002012-09-05T13:04:27.599+03:00Javascript. Реализация Singleton и статического класса
Реализовать статический класс в js очень просто, это будет простой объект:
var obj = {
field: 'value',
fnTest: function(){
return 'res: '+ this.field;
}
};
// Использование:
console.log( obj.field ); // 'value'
console.log( obj.fnTest() ); // 'res: value'
Если нам нужна предварительная инициализация, то добавим некий метод init, который может устанавливать значение полей объекта:
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-69775204207857836742012-06-13T16:47:00.000+03:002012-06-13T17:10:56.987+03:00jQuery. Reverse each. Обратный перебор
Встречаются задачи, когда было бы удобно осуществлять перебор коллекции jQuery в обратном порядке. Ниже привожу функцию которая дает такую возможность:
jQuery.fn.reverseEach = (function () {
var list = jQuery([1]);
return function (c) {
var el, i=this.length;
try {
while (i-->0 && (el=list[0]=this[i]) && c.call(list,i,el)!==false);
}
catch(e) {
delete list[0];
throw e;
}
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-29453244124490781412012-05-08T10:58:00.001+03:002012-05-08T10:58:45.126+03:00JSON валидатор
Хочу поделиться ссылкой на онлайн валидатор JSON: http://jsonlint.com/
Будет полезным, особенно для проверки ответов сервера в ajax запросах (если ответ в формате JSON)
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-2410644055159954982012-03-12T23:10:00.000+02:002012-03-12T23:10:59.291+02:00Вставка текущего курса валют USD/UAH в ячейку таблицы google docsGoogle Docs Spreadsheets очень удобный онлайн инструмент для ведения бухгалтерии. Допустим, что такая бухгалтерия ведеться в долларах США, но в конечном итоге надо получить все суммы в гривнах, учитывая текущий курс валют.
Как выход - в ячейку вбить текущий курс и отталкиватся от него. Минус такого подхода состоит в том, что постоянно придется корректировать этот самый текущий курс (как минимум userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com46tag:blogger.com,1999:blog-6162240502372391532.post-58124086806538175432012-03-12T15:47:00.003+02:002012-03-12T18:44:45.990+02:00jQuery. Быстрый итератор quickEachЕсли вам нужно часто работать с итераторами each в jQuery, и вам приходиться часто внутри него пользоваться $(this), то есть смысл немного оптимизировать код.
Пример: необходимо перебрать список li и что-то сделать с каждым элементом списка
var list = $("ul li");
list.each(function() {
var el = $(this); // получаем объект jQuery из объекта DOM
el..... // Какое-то действие с объектом
});
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-62179782466527087722012-02-29T10:45:00.001+02:002012-02-29T10:47:27.997+02:00Какой комбинацией клавиш перейти в командную строку браузераПереход в командную строку браузера осуществляется комбинацией Ctrl+L, Тестировал в последних версиях FireFox, Chrome, IE, Opera, Safari.
P.S. Реально позволяет более комфортнее работать.userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com2tag:blogger.com,1999:blog-6162240502372391532.post-4478860104516192852012-02-14T12:23:00.001+02:002012-02-14T17:05:16.160+02:00JavaScript. Поиск строки методом like (аналог like из MySQL)Недавно, мне понадобилось осуществлять поиск по массиву объектов(со строковыми полями). В JavaScript, сложный поиск осуществляется с помощью регулярных выражений, для того чтобы искать в контексте объекта String, есть метод(прототип) match().
Но так как задача похожа на поиск по БД, то мне захотелось использовать синтаксис поиска MySQL функции like() - она очень удобна, когда не нужно явно userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com3tag:blogger.com,1999:blog-6162240502372391532.post-79147203754150775432012-02-08T16:14:00.001+02:002012-02-08T16:33:16.588+02:00JavaScript. Проверить является или нет один хеш подмножеством другогоЗадача: Проверить два хеша на предмет того, является или нет, один из них подмножеством другого. Мы проверяем полное соответствие как ключей, так и значений. Порядок параметров значения иметь не должен.
Решение:
var isHashSubset = function(a, b){
var f = true;
for(var id in b){
if(b.hasOwnProperty(id)){
if(!((undefined!=a[id])&&(undefined!=b[id])&&(b[id]==a[id]))){
f = userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-24111892722975830412012-02-07T11:54:00.001+02:002012-02-07T11:56:06.602+02:00MySQL. Группировка по интерваламПостановка задачи: есть таблица table(id:int, time:timestamp, val:double) в которую периодически заносятся показания некого прибора (например каждые 5 секунд).
Задача: вывести средние значения показаний прибора за определенные интервалы времени, например средние значение за каждые 60 минут
SELECT `id`, DATE_FORMAT(`time`, '%Y-%m-%d %H:%i') as `dt`, avg(val) as `value`
FROM `table`
GROUP BY `id`userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com3tag:blogger.com,1999:blog-6162240502372391532.post-75715295515202808932011-12-14T12:14:00.001+02:002011-12-14T12:24:38.808+02:00Простая установка RVM, Rails3 в LinuxУстановка последней версии rails с использованием Ruby Version Manager (RVM):
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
$ source ~/.bash_profile
$ rvm install 1.9.2
$ rvm use 1.9.2 --default
$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
$ gem userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-3163148123113716622011-09-22T14:54:00.001+03:002012-06-13T17:24:27.536+03:00jQuery.css(display:'none') vs jQuery.hide()Меня заинтересовал вопрос: какой метод быстрее скрывает элемент на страничке(и востанавливает)
$(container).css('display', 'none') или $(container).hide()
Нашел замечательный сайт http://jsperf.com/jquery-css-display-none-vs-hide/2, на котором проводится тестирование всех возможных способов спрятать элемент под разными браузерами. Вы можете сами запустить тесты или просмотреть уже готовые userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com6tag:blogger.com,1999:blog-6162240502372391532.post-16014233249450923512011-09-20T13:21:00.003+03:002011-09-20T13:23:35.965+03:00jQuery. Исключающий фильтр :notПостановка задачи: необходимо выбрать все элементы "li" у которых отсутствует класс "test":
items = $("li:not(.test)");
//или:
items = $("li").not(".test")
//Вывод результата:
console.log('Items:', items);
Основное применение - исключить по селектору нежелательные вхождения из результирующего набора выборки.
Ссылка на статью в официальной документации: http://api.jquery.com/not/
Дляuserfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com0tag:blogger.com,1999:blog-6162240502372391532.post-33693510881681486432011-09-09T12:06:00.001+03:002012-01-04T16:46:19.292+02:00jQuery. Особенности использования .parent(), .parents(), .closest(), .siblings()Для того чтобы найти родительский элемент(ы) выбранного узла, можно пользоваться похожими методами: .parent(), .parents(), .closest(). Для поиска соседних узлов пользуются .siblings().
Рассмотрим различия между ними:
Первый метод .parent([selector]) - находит родителя строго на один уровень вверх.Пример: $(this).parent()
Для того чтобы получить родителя от родителя нужно применять userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com7tag:blogger.com,1999:blog-6162240502372391532.post-8598502404093589972011-08-26T13:07:00.002+03:002011-08-26T13:08:58.701+03:00jQuery. Проверить видимость элемента на странице (видимый/невидимый)Для того чтобы проверить видимый элемент или нет, можно воспользоваться двумя способами:
Допустим, у нас есть скрытый элемент с id="test":
$("#test").is(":visible") => false
или:
$("#test").is(":hidden") => true
userfoenixhttp://www.blogger.com/profile/09935387625470878056noreply@blogger.com10