Реализация функций replace(), uppercase(), lowercase()
crazyprog @crazyprog
User
Разработка дополнений только что стала проще
3 min
4.1KTranslation
![[Developer Hub Logo]](https://habrastorage.org/getpro/geektimes/post_images/ebb/a0b/394/ebba0b39426593f4a085d5a7d0a7ca57.png)
+58
Новые идеи по АПИ RabbitMQ AMQP для PHP
2 min
2.9KНедавно опубликовал разработанное ранее PHP API для RabbitMQ «AMQP теперь и для РНР»
При обсуждении было предложено сделать PHP API более объектной моделью,
более близкой к модели, предложенной в Протоколе AMQP.
Код немного усложнится, но объектная модель будет более красивой,
Прежде чем перейти к кодированию, представляю на обсуждение новое API
При обсуждении было предложено сделать PHP API более объектной моделью,
более близкой к модели, предложенной в Протоколе AMQP.
Код немного усложнится, но объектная модель будет более красивой,
Прежде чем перейти к кодированию, представляю на обсуждение новое API
+2
Выполнение фоновых процессов из PHP в Windows
2 min
2KВ *nix, запуска фоновых процессов, выполняется простым добавлением амперсанда (&) к команде. В Windows, это не так просто сделать из PHP.
Если вы используете в PHP функции системных вызовов, как exec, system, passthru или shell_exec, то эти методы приводят к подвисанию программы, которая ждет завершения работы вызванного процесса.
Описанные ниже методы предполагают, что вы используете PHP-CLI (работу с php из командной строки). Запуск PHP на веб-сервере требует правильной настройки конфигурации и прав доступа, такие как safe_mode, safe_mode_exec_dir и т.д.
Для примера, мы хотим вызвать cmd из PHP, но чтобы программа продолжала выполнять действия.
Приведенные ниже примеры не работают.
exec(«cmd»);
exec(«cmd >NUL»);
exec(«cmd /c cmd»);
exec(«start /b cmd»);
exec(«runas cmd»);
В каждом случае, PHP ждет пока cmd закроется.
Существуют несколько обходных путей, упомянутых в комментариях к документации по PHP к функции exec()
Краткое изложение этих методов, в порядке предпочтения:
Начало процесса с использованием popen и pclose
Этот код должен работать на Linux и Windows.
$exe = «cmd.exe»;
pclose(popen('start «bla» "'. $exe. '" '. escapeshellarg($args), 'r'));
Начало фонового процесса с использованием объекта WScript.Shell
Этот код работает только в Windows.
$WshShell = new COM(«WScript.Shell»);
// Запуск cmd в свернутом состоянии
$oExec = $WshShell->Run(«cmd», 7, false);
// Запуск cmd в фоновом режиме, иконка на панели задач не выводится
$oExec = $WshShell->Run(«cmd /C dir /S %windir%», 0, false);
Более подробнее о методе Run() читайте в msdn.
Начало фонового процесса с использованием утилиты PsExec
Этот метод требует установки бесплатной утилиты PsTools от Sysinternals
exec(«psexec -d cmd.exe»);
Автор этого текста root{Собака}imcms.ru можете отправит ему инвайт.
Если вы используете в PHP функции системных вызовов, как exec, system, passthru или shell_exec, то эти методы приводят к подвисанию программы, которая ждет завершения работы вызванного процесса.
Описанные ниже методы предполагают, что вы используете PHP-CLI (работу с php из командной строки). Запуск PHP на веб-сервере требует правильной настройки конфигурации и прав доступа, такие как safe_mode, safe_mode_exec_dir и т.д.
Для примера, мы хотим вызвать cmd из PHP, но чтобы программа продолжала выполнять действия.
Приведенные ниже примеры не работают.
exec(«cmd»);
exec(«cmd >NUL»);
exec(«cmd /c cmd»);
exec(«start /b cmd»);
exec(«runas cmd»);
В каждом случае, PHP ждет пока cmd закроется.
Существуют несколько обходных путей, упомянутых в комментариях к документации по PHP к функции exec()
Краткое изложение этих методов, в порядке предпочтения:
Начало процесса с использованием popen и pclose
Этот код должен работать на Linux и Windows.
$exe = «cmd.exe»;
pclose(popen('start «bla» "'. $exe. '" '. escapeshellarg($args), 'r'));
Начало фонового процесса с использованием объекта WScript.Shell
Этот код работает только в Windows.
$WshShell = new COM(«WScript.Shell»);
// Запуск cmd в свернутом состоянии
$oExec = $WshShell->Run(«cmd», 7, false);
// Запуск cmd в фоновом режиме, иконка на панели задач не выводится
$oExec = $WshShell->Run(«cmd /C dir /S %windir%», 0, false);
Более подробнее о методе Run() читайте в msdn.
Начало фонового процесса с использованием утилиты PsExec
Этот метод требует установки бесплатной утилиты PsTools от Sysinternals
exec(«psexec -d cmd.exe»);
Автор этого текста root{Собака}imcms.ru можете отправит ему инвайт.
+4
Алгоритм: избавляемся от паролей на разные ресурсы — используем почтовый ящик
1 min
537Очередная идея о том, как избавится от кучи паролей к разным веб-ресурсам и сделать жизнь человечества проще.
Универсальная система логина на сайте:
Так выглядит общая схема :) Что имеем в итоге — авторизовались на ресурсе, не имея дополнительного логина и пароля — используется только почта. Ну и никаких дополнительных сервисов/библиотек не требуется — все достаточно просто.
Теперь прикинем минусы данного подхода и как их можно обойти…
Универсальная система логина на сайте:
- Пользователь заходит сайт и вводит свою почту.
- Ему посылается письмо с секретным URLом.
- По заходу на этот URL — он оказывается авторизованным, а письмо может удалить(может и оставить на будущее).
Так выглядит общая схема :) Что имеем в итоге — авторизовались на ресурсе, не имея дополнительного логина и пароля — используется только почта. Ну и никаких дополнительных сервисов/библиотек не требуется — все достаточно просто.
Теперь прикинем минусы данного подхода и как их можно обойти…
-5
PHP & AMQP (Продолжение) Инсталляция php-rabbit
2 min
1.8KВ продолжении статьи «AMQP теперь и в РНР»
кому интересно, какие камни ожидают при инсталляции php-rabbit
кому интересно, какие камни ожидают при инсталляции php-rabbit
+2
Системы резервного копирования
4 min
4.2KНесколько месяцев назад начал заниматься/разбираться в системах резервного копирования. Все полезные доки/ссылки я сохраняю у себя в заметках.
Много чего накопилось, решил поделиться записями, полезными ссылками и личным опытом.
Много чего накопилось, решил поделиться записями, полезными ссылками и личным опытом.
+7
Google Sites открыл API
1 min
2.6K
В первую очередь это должно обрадовать корпоративных клиентов. Именно они должны вовсю начать использовать появившиеся возможности. Вот некоторые примеры.
- Обновление Google Sites из CRM-систем.
- Импорт файлов и контента из корпоративных систем вроде Microsoft SharePoint и Lotus Notes.
- Экспорт страниц Google Sites для редактирования в офлайне, а потом повторный импорт обновлённого контента.
- Экспорт сайтов целиком для бэкапа, с сохранением всей истории изменений.
Список возможностей можно продолжать, потому что весь контент Google Sites становится доступным через стандартный протокол Google Data.
+27
Потребительская Экспертная социальная сеть
2 min
369Наше агентство мобильного маркетинга (СМС рассылки) постоянно сталкивается с отсутствием конструктивной связи между потребителями и поставщиками товаров и услуг. Возможно это какая то региональная особенность, но трудно очень простому обывателю совершать покупки не посещая места продаж непосредственно и далее риск приобретения некачественного товара или услуги и т.д. И поставщики не видят своего покупателя. Вот поэтому пытаюсь возможно кривовато представить на суд некой экспертной, потребительской сети где:
Пользователи на своих страницах могут выбирать и фиксировать любимые торговые марки и предпочтения для:
1. Прямго контакта с поставщиками товаров и услуг региона. Знакомства с ассортиментом и обзор комментариев. Получение информации от компаний.
2. Получение или генерация на странице электронной скидки штрих-кода на телефон. (друга история чем бесконечное количество пластиковых дисконтов).
3. Общение по различным темам, товарам, услугам и т.д. Обмен информацией.
4. Возможность оставить пожелания в коментах или блогах пожелания приобретения услуги и описание её качества.
5. Получать вознаграждение за идеи продаж, организацию акций и проектов, привлечение покупателей.
Поставщики.
1. Компании региона имеют страницы с кратким описанием и ссылкой на основной сайт с возможностью размещения на своей странице каталога продукции.
2. Посетители могут рекомендовать перечень товаров, которыми пользуются, наименование служит ссылку на каталоги.
3. Опросы. Рейтинги. Акции привлечения внимания, по средствам сарафанного радио.
Дополнительные программы для посетителей.
Экономика. Счетчик расходов средств и публикация некоторых статей, например «коммунальные расходы», для обсуждения вариантов экономии или улучшения качества.
Семья. Бонусная программа привлечения друзей и родственников к деятельному участию в сети.
Возможность экспорта записных книжек с любого телефона.
Идеи. Любые идеи по улучшению качества предоставления товаров и услуг. Конкурсы-заявки с призовым фондом от компаний.
Будем благодарны за комментарии, потому как все технологии выше обозначенные давно существуют и работают, но огромное количество не продвинутых пользователей о них даже не догадывается.
Вопрос продвижения, это другой вопрос…
Пользователи на своих страницах могут выбирать и фиксировать любимые торговые марки и предпочтения для:
1. Прямго контакта с поставщиками товаров и услуг региона. Знакомства с ассортиментом и обзор комментариев. Получение информации от компаний.
2. Получение или генерация на странице электронной скидки штрих-кода на телефон. (друга история чем бесконечное количество пластиковых дисконтов).
3. Общение по различным темам, товарам, услугам и т.д. Обмен информацией.
4. Возможность оставить пожелания в коментах или блогах пожелания приобретения услуги и описание её качества.
5. Получать вознаграждение за идеи продаж, организацию акций и проектов, привлечение покупателей.
Поставщики.
1. Компании региона имеют страницы с кратким описанием и ссылкой на основной сайт с возможностью размещения на своей странице каталога продукции.
2. Посетители могут рекомендовать перечень товаров, которыми пользуются, наименование служит ссылку на каталоги.
3. Опросы. Рейтинги. Акции привлечения внимания, по средствам сарафанного радио.
Дополнительные программы для посетителей.
Экономика. Счетчик расходов средств и публикация некоторых статей, например «коммунальные расходы», для обсуждения вариантов экономии или улучшения качества.
Семья. Бонусная программа привлечения друзей и родственников к деятельному участию в сети.
Возможность экспорта записных книжек с любого телефона.
Идеи. Любые идеи по улучшению качества предоставления товаров и услуг. Конкурсы-заявки с призовым фондом от компаний.
Будем благодарны за комментарии, потому как все технологии выше обозначенные давно существуют и работают, но огромное количество не продвинутых пользователей о них даже не догадывается.
Вопрос продвижения, это другой вопрос…
-6
Потребительская Экспертная социальная сеть
2 min
390Наше агентство мобильного маркетинга (СМС рассылки) постоянно сталкивается с отсутствием конструктивной связи между потребителями и поставщиками товаров и услуг. Возможно это какая то региональная особенность, но трудно очень простому обывателю совершать покупки не посещая места продаж непосредственно и далее риск приобретения некачественного товара или услуги и т.д. И поставщики не видят своего покупателя. Вот поэтому пытаюсь возможно кривовато представить на суд некой экспертной, потребительской сети где:
Пользователи на своих страницах могут выбирать и фиксировать любимые торговые марки и предпочтения для:
1. Прямго контакта с поставщиками товаров и услуг региона. Знакомства с ассортиментом и обзор комментариев. Получение информации от компаний.
2. Получение или генерация на странице электронной скидки штрих-кода на телефон. (друга история чем бесконечное количество пластиковых дисконтов).
3. Общение по различным темам, товарам, услугам и т.д. Обмен информацией.
4. Возможность оставить пожелания в коментах или блогах пожелания приобретения услуги и описание её качества.
5. Получать вознаграждение за идеи продаж, организацию акций и проектов, привлечение покупателей.
Поставщики.
1. Компании региона имеют страницы с кратким описанием и ссылкой на основной сайт с возможностью размещения на своей странице каталога продукции.
2. Посетители могут рекомендовать перечень товаров, которыми пользуются, наименование служит ссылку на каталоги.
3. Опросы. Рейтинги. Акции привлечения внимания, по средствам сарафанного радио.
Дополнительные программы для посетителей.
Экономика. Счетчик расходов средств и публикация некоторых статей, например «коммунальные расходы», для обсуждения вариантов экономии или улучшения качества.
Семья. Бонусная программа привлечения друзей и родственников к деятельному участию в сети.
Возможность экспорта записных книжек с любого телефона.
Идеи. Любые идеи по улучшению качества предоставления товаров и услуг. Конкурсы-заявки с призовым фондом от компаний.
Будем благодарны за комментарии, потому как все технологии выше обозначенные давно существуют и работают, но огромное количество не продвинутых пользователей о них даже не догадывается.
Вопрос продвижения, это другой вопрос…
Пользователи на своих страницах могут выбирать и фиксировать любимые торговые марки и предпочтения для:
1. Прямго контакта с поставщиками товаров и услуг региона. Знакомства с ассортиментом и обзор комментариев. Получение информации от компаний.
2. Получение или генерация на странице электронной скидки штрих-кода на телефон. (друга история чем бесконечное количество пластиковых дисконтов).
3. Общение по различным темам, товарам, услугам и т.д. Обмен информацией.
4. Возможность оставить пожелания в коментах или блогах пожелания приобретения услуги и описание её качества.
5. Получать вознаграждение за идеи продаж, организацию акций и проектов, привлечение покупателей.
Поставщики.
1. Компании региона имеют страницы с кратким описанием и ссылкой на основной сайт с возможностью размещения на своей странице каталога продукции.
2. Посетители могут рекомендовать перечень товаров, которыми пользуются, наименование служит ссылку на каталоги.
3. Опросы. Рейтинги. Акции привлечения внимания, по средствам сарафанного радио.
Дополнительные программы для посетителей.
Экономика. Счетчик расходов средств и публикация некоторых статей, например «коммунальные расходы», для обсуждения вариантов экономии или улучшения качества.
Семья. Бонусная программа привлечения друзей и родственников к деятельному участию в сети.
Возможность экспорта записных книжек с любого телефона.
Идеи. Любые идеи по улучшению качества предоставления товаров и услуг. Конкурсы-заявки с призовым фондом от компаний.
Будем благодарны за комментарии, потому как все технологии выше обозначенные давно существуют и работают, но огромное количество не продвинутых пользователей о них даже не догадывается.
Вопрос продвижения, это другой вопрос…
-3
Резервное копирование mysql-базы. мой путь =)
2 min
2.1KЗадача стояла такая – часто бэкапить базу + экономить место на харде.
Прочитав одну статейку по созданию инкрементального бэкапа для дампов через diff понял что это всё бредятина какая-то.
Промелькнула мысль – а почему бы не заливать дамп базы в git? Ведь можно будет и откатиться на нужный коммит, и склонировать репозиторий для экспериментов, и вкушать все прелести данной системы. =)
Сразу определися – я делал всё под FreeBSD. Следовательно под Linux нужно будет подпилить напильничком.
Ну, начинёмс! Сначала ставим гит (если нет в системе)!
Предварительно обновив порты пишем cd /usr/ports/devel/git && make install clean
Git поставился. Выбираем место для папки с бэкапом базы и создаём папку mkdir /backup/bases/test
Далее cd /backup/bases/test и инициализируем там репозиторий командой git init
Я написал скрипт который дампит базу потаблично, добавляет файлы в репозиторий и создаёт коммит с датой бэкапа
Запечатываем данный скрипт в файл, делаем его исполняемым и плюхаем в крон.
Далее после нескольких бэкапов заходим в папку с бэкапом базы и пишем git log – вам выведется история наших бэкапов.
Напоследок:
Прочитав одну статейку по созданию инкрементального бэкапа для дампов через diff понял что это всё бредятина какая-то.
Промелькнула мысль – а почему бы не заливать дамп базы в git? Ведь можно будет и откатиться на нужный коммит, и склонировать репозиторий для экспериментов, и вкушать все прелести данной системы. =)
Сразу определися – я делал всё под FreeBSD. Следовательно под Linux нужно будет подпилить напильничком.
Ну, начинёмс! Сначала ставим гит (если нет в системе)!
Предварительно обновив порты пишем cd /usr/ports/devel/git && make install clean
Git поставился. Выбираем место для папки с бэкапом базы и создаём папку mkdir /backup/bases/test
Далее cd /backup/bases/test и инициализируем там репозиторий командой git init
Я написал скрипт который дампит базу потаблично, добавляет файлы в репозиторий и создаёт коммит с датой бэкапа
#!/usr/local/bin/bash
backupurl=”/backup/bases/test”
for i in `/usr/local/bin/mysql -e “use test;show tables;” -uUSER -pPASS|tr -d “|”|grep -v “Tables_in_”`;do /usr/local/bin/mysqldump –quick –skip-extended-insert –dump-date=false –compact=true -uUSER -pPASS test $i >$backupurl/$i.sql;done
/usr/local/bin/mysqldump -uUSER -pPASS –no-data test > $backupurl/structure.sql #отдельно бэкапим структуру базы
cd $backupurl
/usr/local/bin/git add . #добавляем файлы
sleep 2
/usr/local/bin/git commit -am “backup `date +%d.%m.%y.%H.%M`” #коммит с чилом и временем
Запечатываем данный скрипт в файл, делаем его исполняемым и плюхаем в крон.
Далее после нескольких бэкапов заходим в папку с бэкапом базы и пишем git log – вам выведется история наших бэкапов.
Напоследок:
- Читайте документацию по гиту
- Поставьте в крон (в зависимости от объёмов базы… лично у меня раз в сутки) команду cd /backup/bases/test && git gc – это серьёзно сжимает репозиторий
- Для отката желательно склонить репозиторий и сделать откат через git reset HEAD^^
- Опция –skip-extended-insert ОБЯЗАТЕЛЬНА. она запрещает расширеные инсерты которые сводят на нет всю мою затею с гитом
+3
как способ изучения Английского
1 min
19KМногие из читателей хабра регулярно слушают разные подкасты, этот полезный вид времяпрепровождения можно сделать ещё более полезным, если слушать подкасты на английском.


Поделюсь теми, на которые подписан я:
+82
Новый взгляд на JavaScript инъекции
2 min
1.9KНедавно столкнулся со следующей задачей — существует JavaScript объект actions с кучей методов, в каждом из которых должны быть определены следующие переменные:
Но определять их очень не хотелось, так как во-первых от этого заметно утяжелится код, а во-вторых объект actions создавался для будущих пользователей моего фреймворка Persik, и как предполагается, каждый сможет не только применять готовые методы actions, но и определять свои.
var persik = this, actions = persik.actions, next = ( persik.dom.возможноЕщёЧтоТо.имяЭтогоМетода.next)? persik.dom.возможноЕщёЧтоТо.имяЭтогоМетода.next : function(){return false};
Но определять их очень не хотелось, так как во-первых от этого заметно утяжелится код, а во-вторых объект actions создавался для будущих пользователей моего фреймворка Persik, и как предполагается, каждый сможет не только применять готовые методы actions, но и определять свои.
-2
Анонимный web-серфинг с Android
2 min
6.2KTranslation
Группа разработчиков Digital Technology Group (DTG) от Кембриджского Университета выпустила приложение для платформы Android, которое позволяет пользователям данной платформы анонимно путешествовать по сети, используя The Onion Router, который часто называют просто TOR. Это свободная программа, разработанная с целью предоставить пользователям возможность анонимного серфинга. Данная программа работает на основе технологии peer2peer, это значит, что используя соединение через распределенную сеть серверов, поддерживаемыми энтузиастами со всего мира, предотвращается возможность опеределения сайтами физического положения пользователя.
+4
4 шага чтобы стать новым медиа
2 min
826Translation
Примечание переводчика: Что такое медиа-компания нового типа, я писал здесь и здесь. О том, как работает такая организация, писал здесь, здесь и здесь. Бизнес-модели для нее – здесь, здесь и здесь.
Данная статья описывает, как стать такой новой медиа-компанией, как перестроить работу своего СМИ на новый лад. Статью я перевожу не полностью, только важнейшие постулаты.
Данная статья описывает, как стать такой новой медиа-компанией, как перестроить работу своего СМИ на новый лад. Статью я перевожу не полностью, только важнейшие постулаты.
-1
Джефф Дин раскрывает тайны Google
1 min
1.2KГугл никогда не сообщал, сколько серверов работает в его Дата-Центрах и как они работают. Но вот, на недавней конференции, Джефф Дин, один из инженеров, работающих в компании с 1999г, выступил с презентацией, в которой он рассказал, что разрабатывает систему автоматического распределения ресурсов, называемую Spanner.
Система позволяет динамически выделить ресурсы для обработки данных и способна задействовать от 1 до 10 миллионов серверов. При этом автоматические выбирается наиболее дешевый вариант выполнения, учитывающий трафик и электричество.
Я советую открыть презентацию (PDF), если вас интересуют масштабируемые системы, высокая нагрузка, кластеризация, Дата-Центры и паралельные вычисления.
Система позволяет динамически выделить ресурсы для обработки данных и способна задействовать от 1 до 10 миллионов серверов. При этом автоматические выбирается наиболее дешевый вариант выполнения, учитывающий трафик и электричество.
Я советую открыть презентацию (PDF), если вас интересуют масштабируемые системы, высокая нагрузка, кластеризация, Дата-Центры и паралельные вычисления.
+20
Настройка mysql для репликаций по ssl (Debian, Ubuntu)
5 min
2.2KСтатья для тех, кому нужно настроить репликации типа master-slave на сервере mysql, используя защищенное соединение. Когда возникла необходимость, я столкнулся с недостаточностью информации на русском о настройке репликации и практически с полным отсутствием информации, как это сделать, используя ssl. В конце концов поднять репликации мне удалось. Хочу поделиться опытом и нарытыми ссылками.
+6
Написание базового wave-робота на python'e
6 min
4.6K
По лету мне достался инвайт в гугльвейв песочницу. Но в этой самой песочнице было очень много народу, все волны были публичными, и мой бедный нетбук только с большим скрипом переваривал всю эту активность, так что, немного поигравшись, на сендбокс я забил :)
И вот недавно мой аккаунт в сендбоксе превратился в аккаунт в лайвпревью, и я, разослав инвайты тем, до кого добрался, и ожидая, пока хоть кто-то из знакомых их получит, сел разбираться с роботским апи.
+50
Мини-обзор или впечатления от покупки — Acer Revo R3600 (двухядерный Atom 330)
3 min
14KПриобрел намедни этот замечательный девайс.
Подробности в продолжении… (трафик)
![]() |
Характеристики таковы:
|
Подробности в продолжении… (трафик)
+67
Шифрование отдельной части PHP-скрипта
3 min
4.5KМногие из тех, кто программируют на PHP, сталкивались с необходимостью шифрования своих скриптов в байткод для передачи на сторону. Слава богу, в наши дни существует огромный ассортимент PHP Encoder'ов, — как говорится, на любой вкус и цвет!
Мы же в своей работе столкнулись с нетривиальной задачей. Требовалось скрыть лишь некоторую часть кода, — функцию, содержимое которой не должен увидеть никто, кроме нас.
Мы же в своей работе столкнулись с нетривиальной задачей. Требовалось скрыть лишь некоторую часть кода, — функцию, содержимое которой не должен увидеть никто, кроме нас.
+21
Information
- Rating
- Does not participate
- Location
- Зеленоград, Москва и Московская обл., Россия
- Registered
- Activity