Pull to refresh
1
0
Send message

Реализация шаблона Identity Map в Yii Framework

Reading time3 min
Views8.3K
Доброго времени суток, хабрасообщество!

Проблема


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

Например, допустим, у нас есть некоторая модель ActiveRecord — Expence и вот такой код:
$modelOne = Expence::model()->findByPk(10);
$modelTwo = Expence::model()->findByPk(10);
var_dump($modelOne === $modelTwo); // Вернет false

Таким образом, меняя одну модель мы никоим образом не затронем вторую(что логично, так как они ссылаются на разные объекты).
$modelOne->someField = "Data";
$modelOne->save();
/// ...какой-то код...
echo $modelTwo->someField; // Содержит старое значение
$modelTwo->save(); // Затираем ранее записаные данные

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

Руководство по оформлению HTML/CSS кода от Google

Reading time12 min
Views361K

От переводчика


С удовольствием ознакомился с этими рекомендациями и теперь предлагаю вам перевод.

Введение


Это руководство описывает правила для оформления и форматирования HTML и CSS кода. Его цель — повысить качество кода и облегчить совместную работу и поддержку инфраструктуры.

Это относится к рабочим версиям файлов использующих HTML, CSS и GSS

Разрешается использовать любые инструменты для минификации компиляции или обфускации кода, при условии, что общее качество кода будет сохранено.
Читать дальше →

SkypeKit в качестве XMPP gateway

Reading time1 min
Views7.6K
Странно, что после появления такого изобретения, как SkypeKit, этого еще никто не сделал.

Собственно такой шлюз позволяет обмениваться сообщениями с пользователями Skype, используя уже имеющуюся кучу клиентов с поддержкой Jabber.
Читать дальше →

SkypeKit и с чем его едят

Reading time7 min
Views15K
SkypeKit — это проприетарный SDK для Skype. В принципе единственное на сегодня средство создания альтернативных Skype клиентов. Продукт интересен, но имеет достаточное количество проблем, которые могут вызвать разочарование у воодушевленного разработчика.

О том, что Skype открыл свой SDK уже писали на хабре. Поэтому топик будет непосредственно о практическом смысле применения SkypeKit и о его подводных камнях.
Читать дальше →

Многозадачность в микроконтроллерах на основе продолжений

Reading time8 min
Views27K
Программисты C и так не избалованы возможностями языка, а разработчики встроенных систем на микроконтроллерах ограничены еще больше, зачастую их программы работают на голом железе, без поддержки ОС.
Возможность использования в С сопрограмм, генераторов, кооперативной многозадачности часто может сильно упростить программу и сэкономить силы, но эти возможности языка не очевидны и многие про них не знают.
Продолжения (contionuation) позволяют запомнить состояние выполнения программного потока (функции), и вернуться к этому месту в дальнейшем.
Используя продолжения, мы можем получить сопрограммы (coroutine), а это уже практически готовые генераторы, итераторы и кооперативная многозадачность.
Читать дальше →

Пишем свой API для сайта с использованием Apache, PHP и MySQL

Reading time9 min
Views163K

С чего все началось



Разрабатывая проект, я столкнулся с необходимостью организации клиент-серверного взаимодействия приложений на платформах iOS и Android с моим сайтом на котором хранилась вся информация — собственно БД на mysql, картинки, файлы и другой контент.
Задачи которые нужно было решать — достаточно простые:
регистрация/авторизация пользователя;
отправка/получение неких данных (например список товаров).

И тут-то мне захотелось написать свой API для взаимодействия с серверной стороной — большей своей частью для практического интереса.

Входные данные



В своем распоряжении я имел:
Сервер — Apache, PHP 5.0, MySQL 5.0
Клиент — Android, iOS устройства, любой браузер

Я решил, что для запросов к серверу и ответов от него буду использовать JSON формат данных — за его простоту и нативную поддержку в PHP и Android. Здесь меня огорчила iOS — у нее нет нативной поддержки JSON (тут пришлось использовать стороннюю разработку).
Читать дальше →

Точное определение региона по GPS координатам

Reading time4 min
Views21K
При разработке одного приложения возникла проблема разграничения доступа для регионов.

Встала проблема определения принадлежности объекта к какому-либо региону России по его GPS координатам

Первое, что мы начали использовать — это API Google,
после того как прописали алиасы к возвращаемым строкам и оплаты доступа (чтобы убрать лимит на запросы) все заработало.
И все было нормально пока гугл не сменил выдачу, например было раньше: Moskovskaya oblast', стало Moscow oblast'
Тут то и было решено не надеяться на гугл, а определять регион своими силами.


как мы решили эту задачу

Что скрывает от нас директория .git

Reading time4 min
Views26K
Вот и мне посчастливилось познакомиться с git. Каюсь, пользуясь Subversion, я знал, как в IDEA или TortoiseSVN сделать то, что мне надо, но даже не представлял, что происходит за сценой. В данном случае я решил подойти к git более ответственно и хорошенько изучить его перед использованием. Сейчас я знаю какие команды надо использовать для выполнения задуманного, но не знаю, как это сделать в IDEA или TortoiseSVN.
Но я решил пойти еще дальше и узнать, что происходит в самой директории .git. Там оказалось все настолько интересно и просто, что я решил поделиться этим с вами.
Читать дальше →

Распознаём изображение с токена при помощи камеры

Reading time3 min
Views34K
В организации, где я тружусь в свободное от отдыха время, очень высокие требования к безопасности. Везде, где только можно, для аутентификации пользователей используются токены. Мне выдали вот такую вот штуку:

и сказали: жмёшь кнопку, смотришь цифры, вводишь пароль и радуешься. «Безопасность, конечно, превыше всего, но и о комфорте забывать не следует» — примерно так подумал я и провёл ревизию имеющегося у меня электронного хлама.
Читать дальше →

Маршрутизация в Linux: VRF Lite

Reading time6 min
Views59K
Обычно VRF (Virtual Routing and Forwarding, VPN Routing and Forwarding) используется совместно с MPLS, но без оной в терминологии Cisco называется VRF-Lite. Суть этой технологии в том, что маршрутная информация, принадлежащая различным классам (например, маршруты одного клиента) изолируется друг от друга. Считается, что такие возможности есть только у «взрослых» железных решений, но это не совсем так. Благодаря наличию множественных таблиц маршрутизации, гибких политик маршрутизации всё это можно сделать и в Linux. Кому интересно, добро пожаловать под кат.
Читать дальше →

Свободная библиотека для интеграции 1С и Asterisk

Reading time4 min
Views11K
Cтолкнулся с задачей интеграции 1С и Asterisk. Сразу же выяснилось, что Asterisk дает API для доступа снаружи (Asterisk Management Interface, сокращенно AMI) — мол, подключайтесь из любого приложения и работайте. Чем, собственно, активно пользуются разработчики ПО при интеграции с Asterisk.

А вот с 1С была проблема… Отсутствовала хорошая и главное — бесплатная библиотека для связи 1С и Asterisk. Захотелось исправить эту ситуацию. Поэтому, была написана свободная DLL-библиотека (в терминах 1С — «внешняя компонента») для связи 1C и Asterisk.

Статья будет полезна в первую очередь для программистов 1С. Речь пойдет о библиотеке и некоторых аспектах интеграции 1С и Asterisk.
Читать дальше →

Раскрытие IP-адреса пользователя Skype

Reading time1 min
Views88K


Деанонимизация скайп-пользователя по его skypename через нахождение его реального IP-адреса

1. Качаем отсюда пропатченный скайп версии 5.5:
http://skype-open-source.blogspot.com/2012/03/skype55-deobfuscated-released.html

2. Включаем создание файла с дешифрованным debug логом. Для этого добавляем нескольких ключей в реестр.
https://github.com/skypeopensource/skypeopensource/wiki/skype-3.x-4.x-5.x-enable-logging

3. Выбираем функцию добавить скайп контакт, но не добавляем, а только кликаем на него, чтобы посмотреть vcard. Этого будет достаточно.
Читать дальше →

Невозможное — возможно. Stateful поведение в Stateless приложении!

Reading time4 min
Views8.5K
При разработке веб приложений часто необходимо интерактивное общение с пользователем в процессе выполнения каких-то действий. Веб ERP-системы, в свою очередь, накладывают на такое общение довольно специфичные требования. После ввода в эксплуатацию нескольких вариантов таких систем, я нашел способ, который показался мне наиболее приемлемым. Теперь же хочу поделиться своим решением задачи интерактивной работы с пользователем при выполнении действий на сервере.
Читать дальше →

Как работает изнутри небольшой колл-центр для интернет-магазина

Reading time9 min
Views85K
Первый тезис: каждый звонок стоит 500 рублей, поэтому он действительно очень важен для нас.

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

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

Баг в htb.init v0.8.5, связанный с переключением скорости по времени

Reading time2 min
Views1.5K

Введение


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

PHP: фрактал плохого дизайна

Reading time32 min
Views207K

Предисловие


Я капризный. Я жалуюсь о многих вещах. Многое в мире технологий мне не нравится и это предсказуемо: программирование — шумная молодая дисциплина, и никто из нас не имеет ни малейшего представления, что он делает. Учитывая закон Старджона, у нас достаточно вещей для постижения на всю жизнь.

Тут другое дело. PHP не просто неудобен в использовании, плохо мне подходит, субоптимален или не соответствует моим религиозным убеждениям. Я могу рассказать вам много хороших вещей о языках, которых я стараюсь избегать, и много плохих вещей о языках, которые мне нравятся. Вперёд, спрашивайте! Получаются интересные обсуждения.

PHP — единственное исключение. Фактически каждая деталь PHP в какой-то мере поломана. Язык, структура, экосистема: всё плохо. И даже нельзя указать на одну убийственную вещь, настолько дефект систематичный. Каждый раз, когда я пытаюсь систематизировать недостатки PHP, я теряюсь в поиске в глубину обнаруживая всё больше и больше ужасных мелочей(отсюда фрактал).

PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.
Читать дальше →

Семантическая сеть, ARC2 и PHP

Reading time6 min
Views5.7K
Пока семантическая паутина только-только развивается и захолустные веб-студии не взвинчивают цены за слова семантическая и семантический давайте посмотрим на инструменты для работы с этим зверем в php.
Читать дальше →

Защита сети — вещи, о которых мы забываем

Reading time3 min
Views11K
Добрый день, дорогие Хабравчане.

Давайте подумаем с вами, какие действия мы принимаем для защиты сети от внешних угроз? image
Если речь идет о большой организации, то разумеется выделяется отдельный прокси-сервер (порой не один), на котором настраиваются фильтры, межсетевой экран, прописываются правила для входящего и исходящего траффика и настраивается его учет. На клиентских машинах под управлением Windows ставится постоянно обновляемый антивирус, с возможностью проактивной защиты, клиентских файрволов и прочими «вкусностями».
В организациях поменьше все строится примерно по той же схеме, да и на домашних компьютерах у многих из нас установлены антивирусы и межсетевые экраны (которые постоянно обновляются и мониторятся). Казалось бы, защита настроена, если бы не одно НО, о котором многие забывают.
Читать дальше →

Опыт интеграции IP-телефонии с системой helpdesk через гаджет для Windows 7

Reading time4 min
Views5.3K

Задача


Итак, нам захотелось странного: вот сидит на поддержке сотрудник, если ему поступил звонок, то надо автоматически открыть окно с существующей системой helpdesk, в которое бы передался номер телефона с которого звонят. Для удобства — пришёл звонок, спец сразу видит, что за компьютер, какое его сетевое имя, имя пользователя, что за железо/софт/услуги… База данных сотрудников и всего прочего с их телефонами уже есть, теперь как это связать на автомате?
Читать дальше →

Как я сдавал dCAP

Reading time3 min
Views14K
Компания DIGIUM занимается не только разработкой, поддержкой и производством железа для открытой IP-ATC Asterisk, но еще обучением и сертификацией.

Обучение бывает трех типов:

Asterisk Essentials — онлайн видео курс со стоимостью 300$, доступ к видео будет открыт 6 месяцев.
Asterisk Fast Start — трехдневный курс, которого, к сожалению, пока нет в России.
Asterisk Advanced — пятидневный курс, в нем вы получаете кучу практики и еще больше теории, с недавних пор его можно пройти в России, причем по сравнению с Европой и США вполне недорого.
и два типа Экзаменов:

dCAA (Digium Certified Asterisk Administrator) — этот экзамен по силам сдать каждому, кто прочел Asterisk: The Definitive Guide, прошел Asterisk Essentials или Asterisk Fast Start. Экзамен можно сдать в онлайн режиме после регистрации. Советую все регистрационные данные вводить правильно, т.к. после сдачи экзамена вы получите сертификат в PDF.
dCAP (Digium-Certified Asterisk Professional) — рекомендуется сдавать после Asterisk Advanced. Этот сертификат имеет уникальный номер и придет Вам по почте прямо из DIGIUM.
Как я получил dCAP

Information

Rating
Does not participate
Location
Россия
Registered
Activity