В сети очень мало информации по созданию административных страничек в приложениях и наверно каждый использует свои решения. Именно сейчас хотел бы рассказать к чему я дошел за пол года разработки сайтов на Yii (статья только для тех, кто разбирается во фремворке).
Корнеев Юрий @endo
Программист
Tiling в 2D-играх на Unity, масштабирование материала
4 min
18KПри разработке 2D-игр на Unity часто возникает необходимость делать множество элементов различного размера из одного и того же материала. Самый простой пример – тайлы земли, травы, каменей и прочие элементы во всякого рода платформерах. Как правило, одинаковые тайлы по умолчанию используют один и тот же материал (в противном случае кол-во заранее созаднных материалов было бы чересчур большим). Часто делать каркас уровня из элементарных тайлов может быть неудобно из-за слишком большого кол-ва объектов на уровне, поэтому вместо элементарных тайлов используются большие тайлы – те же тайлы, только увеличенного масштаба. Допустим, нам надо поверх земли «посадить» два участка травы:


+25
Изображения без width/height
1 min
8.7KХорошим тоном считается всегда указывать для изображений, которые мы используем на странице, их длину и ширину. Часто такие картинки, если мы не укажем их размеры, могут во время загрузки раскачивать нашу верстку.
Чтобы во время разработки было более наглядно, где мы пропустили картинки без указания размеров, ребята из 37Signals предложили небольшой, но чрезвычайно полезный сниппет:
Теперь все картинки, для которых мы не указали размеров — будут подсвечены красной рамкой, и пропустить их будет гораздо труднее.
Оригинал статьи
Чтобы во время разработки было более наглядно, где мы пропустили картинки без указания размеров, ребята из 37Signals предложили небольшой, но чрезвычайно полезный сниппет:
img:not([width]):not([height]) {
border: 2px solid red !important;
}
Теперь все картинки, для которых мы не указали размеров — будут подсвечены красной рамкой, и пропустить их будет гораздо труднее.
Оригинал статьи
+80
Как MySQL оптимизирует ORDER BY, LIMIT и DISTINCT
16 min
15KЕсть задачи, которые в рамках реляционных СУБД не имеют универсальных решений и для того чтобы получить хоть какой-то приемлемый результат, приходится придумывать целый набор костылей, который ты потом гордо называешь “Архитектура”. Не так давно мне как раз встретилась именно такая.

Предположим, имеется некоторые сущности А и Б, связанные между собой по принципу One-to-Many. Количество экземпляров данных сущностей достаточно велико. При отображении сущностей для пользователя необходимо применить ряд независимых критериев, как для сущности А так и для сущности Б. Причем результатом применения критериев являются множества достаточно большой мощности — порядка нескольких миллионов записей. Критерии фильтрации и принцип сортировки задается пользователем. Как (я бы ещё спросил: Зачем им миллионы записей на одном экране? — но говорят надо) показать все это пользователю за время 0 секунд?
Решать такие задачи всегда интересно, но их решение сильно зависит от СУБД, под управлением которой крутится твоя база данных. Если у тебя в рукаве козырной туз в виде Oracle, то есть шанс, что эти костыли он подставит сам. Но спустимся на землю — у нас есть только MySQL, так что придется почитать теорию.

Предположим, имеется некоторые сущности А и Б, связанные между собой по принципу One-to-Many. Количество экземпляров данных сущностей достаточно велико. При отображении сущностей для пользователя необходимо применить ряд независимых критериев, как для сущности А так и для сущности Б. Причем результатом применения критериев являются множества достаточно большой мощности — порядка нескольких миллионов записей. Критерии фильтрации и принцип сортировки задается пользователем. Как (я бы ещё спросил: Зачем им миллионы записей на одном экране? — но говорят надо) показать все это пользователю за время 0 секунд?
Решать такие задачи всегда интересно, но их решение сильно зависит от СУБД, под управлением которой крутится твоя база данных. Если у тебя в рукаве козырной туз в виде Oracle, то есть шанс, что эти костыли он подставит сам. Но спустимся на землю — у нас есть только MySQL, так что придется почитать теорию.
+105
Введение в технику оптимизации циклов
4 min
59KБольшая часть времени исполнения программы приходится на циклы: это могут быть вычисления, прием и обработка информации и т.д. Правильное применение техник оптимизации циклов позволит увеличить скорость работы программы. Но прежде, чем приступать к оптимизациям необходимо выделить «узкие» места программы и попытаться найти причины падения быстродействия.
+94
Создание радиостанции. От идеи до реализации
4 min
17K
У многих, наверное, слушая радио, было желание создать свою собственную радиостанцию. Такое желание 7 лет назад появилось и у меня, представлял себя директором крупной радиостанции, где крутится только моя любимая музыка, куда звонят люди и передают приветы. Детские «розовые» очки с меня снял отец – объяснил, что для этого нужно зарегистрировать радиоволну, закупить огромное количество оборудования, провести переговоры с правообладателями на музыку, и все это должно сопровождаться огромными пачками денег в разные кабинеты с дядями в галстуках. Вот так вот и рушатся детские мечты, но «розовая» мечта превратилась в тщательное обдумывание возможности создания радиостанции. И вот только в этом году у меня появились единомышленники, и мы начали воплощать накопленные за долгое время идеи.
+41
Механика казуальных игр
16 min
15KНа хабрахабре периодически предпринимаются попытки описания процесса игроделания с самых разных сторон — от воплощения 3D-графики до создания сетевых протоколов. Эти темы, безусловно, важны, однако довольно узкие. В данной статье я попробую использовать более широкий подход — рассмотрю принцип создания игрового движка для т.н. казуальных игр. Описываемая механика вполне подойдет для создания всяческих пакманов, арканоидов, платформеров и пр. Описание процесса будет на примере примитивного scrolldown шутера (из ностальгических чувств к Zybex и Xevious) — летаем по полю, сбиваем метеориты. Инструмент — Qt.
+49
Сравнение MemCache и MongoDb для сетевого кэша
7 min
9.9KВозникла достаточно неординарная идея: виде средства сетевого кеша взять не MemCache, а MongoDb и сравнить их производительность. Но для представления и сравнения показателей этих двух «механизмов кеширования» взяли еще и другие средства, позволяющие ускорить работу нашего App (APC, RamFS, TmpFS, XCache).
В статье приведены данные и графики сравнения этих механизмов с описанием и рассуждением полученных данных и графиков.
В статье приведены данные и графики сравнения этих механизмов с описанием и рассуждением полученных данных и графиков.
+29
Как мы показываем дизайн сайта клиенту
2 min
19KСреди веб-студий очень часто можно встретить мнение, что дизайн сайта следует показывать заказчику только лично, с презентацией и объяснением. Это действительно справедливо для некоторых проектов, и в первую очередь для тех, в которых заложен бюджет на личные встречи. Второй часто используемый вариант — отправка картинок письмом с комментариями. Этот вариант гораздо дешевле, но обладает рядом недостатков. В моей компании мы используем третий вариант, который недорог и позволяет снять ряд недостатков при отправке дизайна в виде картинки к письму.
+39
Сообщество авторов электронной музыки CjClub.ru ввело поддержку лицензий Creative Commons
1 min
2.7KСообщество авторов электронной музыки CjClub.ru (статья в Википедии) ввело поддержку выбора лицензий Creative Commons, написал в своём блоге на сайте создатель проекта Михаил Гавриш. Теперь авторы могут делиться своими произведениями с пользователи, а пользователи чётко знать свои права в использовании треков. «Мы стараемся идти в ногу с прогрессивной частью интернет-сообщества и внедряем в нашу систему лицензии Creative Commons» — написано в посте.
Указать лицензию можно при загрузке трека. У лицензий доступно описание на русском языке. Выбранная лицензия будет отображатся рядом с треком везде на сайте. В частности, значки лицензий появились на главной странице рядом с новыми и лучшими треками.
В ходе опроса, который проводился в посте, 62% проголосовавших сказало, что они будут использовать лицензии Creative Commons на сайте, что показывает, что авторы вовсе не против копирования их музыки, а наоборот хотят разрешить делать это, в чём им и помогут лицензии Creative Commons. Таким музыкантом не страшно пиратство, потому что пираты автоматически становятся их помощниками — распространителями их музыки в соответствии с лицензией.
CjClub.ru не одинок в мире CC-музыки. Электронную музыку от российских авторов по лицензиям Creative Commons можно найти также на известном сайте Jamendo.
Указать лицензию можно при загрузке трека. У лицензий доступно описание на русском языке. Выбранная лицензия будет отображатся рядом с треком везде на сайте. В частности, значки лицензий появились на главной странице рядом с новыми и лучшими треками.
В ходе опроса, который проводился в посте, 62% проголосовавших сказало, что они будут использовать лицензии Creative Commons на сайте, что показывает, что авторы вовсе не против копирования их музыки, а наоборот хотят разрешить делать это, в чём им и помогут лицензии Creative Commons. Таким музыкантом не страшно пиратство, потому что пираты автоматически становятся их помощниками — распространителями их музыки в соответствии с лицензией.
CjClub.ru не одинок в мире CC-музыки. Электронную музыку от российских авторов по лицензиям Creative Commons можно найти также на известном сайте Jamendo.
+14
Обзор зарплат в IT: коротко о разном
3 min
42KВопросы размера заработной платы постоянно волнуют как соискателей, так и работодателей. Первым, например, важно не продешевить и не выглядеть нагло при ответе на вопрос на собеседовании «Сколько вы хотите получать?». Вторым же, тем более, нужно быть в курсе рыночных цен, чтобы взять в штат адекватного работника, не переплатив при этом лишнего.

Рекрутеры из IT-Доминанты собирают информацию по заработным платам и призывают все компании (от небольших web-студий до крупных корпораций) принять участие в их исследовании. Предложение актуально для компаний из Москвы, Санкт-Петербурга, Нижнего Новгорода и Екатеринбурга.
Так, например, в Санкт-Петербурге в 2010 году разработчик под iPhone получает в среднем 58000 руб., а php-программист 44000 руб. В 40% компаний существовала система кредитования сотрудников, а в 34% была компенсация питания для сотрудников.

Рекрутеры из IT-Доминанты собирают информацию по заработным платам и призывают все компании (от небольших web-студий до крупных корпораций) принять участие в их исследовании. Предложение актуально для компаний из Москвы, Санкт-Петербурга, Нижнего Новгорода и Екатеринбурга.
Так, например, в Санкт-Петербурге в 2010 году разработчик под iPhone получает в среднем 58000 руб., а php-программист 44000 руб. В 40% компаний существовала система кредитования сотрудников, а в 34% была компенсация питания для сотрудников.
+41
Масштабируемые JavaScript приложения
22 min
40KБолее месяца назад в статье FAQ по JavaScript: задавайте вопросы был задан вопрос «Подскажите примеры хорошего подхода организации JS кода к сайту на достаточно высоком уровне. Как можно узнать подробнее практики реализации например gmail?».
Пришло время ответить на данный вопрос. Я немного затянул т.к. хотел рассказать доклад на одноименную тему на Я.Субботнике. Доклад был очень коротким многие важные моменты пришлось выкинуть. Статья — более-менее полная версия.
Эта статья о том, как сделать крупное веб-приложение расширяемым и поддерживаемым: архитектура, подходы, правила.
Пришло время ответить на данный вопрос. Я немного затянул т.к. хотел рассказать доклад на одноименную тему на Я.Субботнике. Доклад был очень коротким многие важные моменты пришлось выкинуть. Статья — более-менее полная версия.
Эта статья о том, как сделать крупное веб-приложение расширяемым и поддерживаемым: архитектура, подходы, правила.
+198
Разработка приложения живого поиска по Twitter с помощью Knockout, jQuery и ASP.NET MVC 3
14 min
7KTranslation
Достаточно не тривиально разработать хорошо спроектированный front-end веб-приложения с уровнем отклика, производительностью и фичами, которые ожидают пользователи сегодня. Легко потеряться в кипящей смеси jQuery обработчиков событий, HTML разметки и AJAX вызовов и даже относительно простой GUI быстро может стать кошмаром для сопровождения.
Один из способов добавления некоторой структуры и порядка на клиентской стороне – использование фреймворка вроде Knockout. Knockout – это свободная Javascript библиотека с открытым исходным кодом, которая помогает реализовать Model-View-View Model (MVVM) паттерн на клиенте. Она хорошо документирована и официальный веб сайт великолепная точка старта с кучей реальных примеров, которые не только демонстрируют использование встроенных фич библиотеки, но и показывают, как расширить её свои собственными фичами.
В этом посте мы рассмотрим, как Knockout может быть использован совместно с плагином отображения, каким-нибудь jQuery и ASP.NET MVC 3 backend (или модель, как вам нравится) для построения простого, но эффективного приложения для живого поиска в Twitter.
Один из способов добавления некоторой структуры и порядка на клиентской стороне – использование фреймворка вроде Knockout. Knockout – это свободная Javascript библиотека с открытым исходным кодом, которая помогает реализовать Model-View-View Model (MVVM) паттерн на клиенте. Она хорошо документирована и официальный веб сайт великолепная точка старта с кучей реальных примеров, которые не только демонстрируют использование встроенных фич библиотеки, но и показывают, как расширить её свои собственными фичами.
В этом посте мы рассмотрим, как Knockout может быть использован совместно с плагином отображения, каким-нибудь jQuery и ASP.NET MVC 3 backend (или модель, как вам нравится) для построения простого, но эффективного приложения для живого поиска в Twitter.
+20
Поисковые технологии или в чем загвоздка написать свой поисковик
3 min
59KКогда-то давно взбрела мне в голову идея: написать свой собственный поисковик. Было это очень давно, тогда я еще учился в ВУЗе, мало чего знал про технологии разработки больших проектов, зато отлично владел парой десятков языков программирования и протоколов, да и сайтов своих к тому времени было понаделано много.
Ну есть у меня тяга к монструозным проектам, да…
В то время про то, как они работают было известно мало. Статьи на английском и очень скудные. Некоторые мои знакомые, которые были тогда в курсе моих поисков, на основе нарытых и мной и ими документов и идей, в том числе тех, которые родились в процессе наших споров, сейчас делают неплохие курсы, придумывают новые технологии поиска, в общем, эта тема дала развитие довольно интересным работам. Эти работы привели в том числе к новым разработкам разных крупных компаний, в том числе Google, но я лично прямого отношения к этому не имею.
На данный момент у меня есть собственный, обучающийся поисковик от и до, со многими нюансами – подсчетом PR, сбором статистик-тематик, обучающейся функцией ранжирования, ноу хау в виде отрезания несущественного контента страницы типа меню и рекламы. Скорость индексации примерно полмиллиона страниц в сутки. Все это крутится на двух моих домашних серверах, и в данный момент я занимаюсь масштабированием системы на примерно 5 свободных серверов, к которым у меня есть доступ.
Ну есть у меня тяга к монструозным проектам, да…
В то время про то, как они работают было известно мало. Статьи на английском и очень скудные. Некоторые мои знакомые, которые были тогда в курсе моих поисков, на основе нарытых и мной и ими документов и идей, в том числе тех, которые родились в процессе наших споров, сейчас делают неплохие курсы, придумывают новые технологии поиска, в общем, эта тема дала развитие довольно интересным работам. Эти работы привели в том числе к новым разработкам разных крупных компаний, в том числе Google, но я лично прямого отношения к этому не имею.
На данный момент у меня есть собственный, обучающийся поисковик от и до, со многими нюансами – подсчетом PR, сбором статистик-тематик, обучающейся функцией ранжирования, ноу хау в виде отрезания несущественного контента страницы типа меню и рекламы. Скорость индексации примерно полмиллиона страниц в сутки. Все это крутится на двух моих домашних серверах, и в данный момент я занимаюсь масштабированием системы на примерно 5 свободных серверов, к которым у меня есть доступ.
+51
Основы SQL на примере задачи
6 min
689KВ этом руководстве мы рассмотрим основные sql команды на примере небольшой задачи. При прочтении желательно сидеть за консолью mysql и вводить все запросы для большей наглядности.
Дана база данных, в ней 3 таблицы следующего вида:



table1: user_id (INT(5), PRIMARY KEY), username (VARCHAR(50), INDEX)
table2: phone_id (INT(5), PRIMARY KEY), user_id (INT(5), INDEX), phone_number (INT(10), INDEX)
table3: room_id (INT(5), PRIMARY KEY), phone_id (INT(5), INDEX), room_number(INT(4) INDEX)
Необходимо выбрать номер комнаты в которой сидит пользователь с ником qux…
Постановка задачи
Дана база данных, в ней 3 таблицы следующего вида:



table1: user_id (INT(5), PRIMARY KEY), username (VARCHAR(50), INDEX)
table2: phone_id (INT(5), PRIMARY KEY), user_id (INT(5), INDEX), phone_number (INT(10), INDEX)
table3: room_id (INT(5), PRIMARY KEY), phone_id (INT(5), INDEX), room_number(INT(4) INDEX)
Необходимо выбрать номер комнаты в которой сидит пользователь с ником qux…
+12
Неограниченый объём облачного хранилища
2 min
9.5KНа сегоднящний день известно множество сервисов, предоставляяющих доступ облачного хранения данных (наиболее популярный из них — dropbox). Почти во всех есть бесплатный аккаунт с ограниченным объёмом данных. В статье Прокачиваем DropBox в режиме «Full auto» рассказывалось как можно увеличить объём вашего dropbox аккаунт а на 8 Гб не тратя при этом никаких усилий.
Однако в данной статье пойдёт речь о получении «неограничнного» объёма в облаке, используя сервисы на основе WebDAV.
Кому интересно – добро пожаловать!
Однако в данной статье пойдёт речь о получении «неограничнного» объёма в облаке, используя сервисы на основе WebDAV.
Кому интересно – добро пожаловать!
+20
Выбираем мультиплатформенный движок для разработки мобильных игр (часть 1)
4 min
53K
+53
Пьеса «Разработка многопользовательской сетевой игры.» Часть 2: Это страшное слово «протокол»
7 min
19KRecovery Mode

Часть 1: Архитектура
Часть 3: Клиент-серверное взаимодействие
Часть 4: Переходим в 3D
Итак, продолжим создание многопользовательской игры.
Сегодня мы рассмотрим создание протокола передачи данных.
А также создадим заготовки TCP сервера и соответственно клиента.
+66
Gearman – фреймворк для распределения задач, введение
6 min
37K
В этой статье, мне бы хотелось рассмотреть один из необычных способов оптимизации приложения, а именно использование проекта Gearman для распределения задач. Gearman является фреймворком для построения таких систем. Примеров кода в статье нет, статья больше вводная, хоть и содержит в себе достаточно практической информации.
+48
Что должен знать о времени каждый программист
3 min
100KTranslation
Некоторые замечания о времени
- UTC: время на нулевом меридиане называется Всемирное координированное время, Universal Coordinated Time. Несовпадение акронима было вызвано необходимостью универсальности его для всех языков.
- GMT: ранее вместо UTC использовалось среднее время по Гринвичу (Greenwich Mean Time, GMT), так как нулевой меридиан был выбран так, чтобы проходить через Гринвичскую королевскую обсерваторию.
- Прочие часовые пояса могут быть записаны как смещение от UTC. Например, Австралийское восточное стандартное время (EST) записывается как UTC+1000, то есть время 10:00 по UTC есть 20:00 по EST того же дня.
+224
Information
- Rating
- Does not participate
- Location
- Украина
- Date of birth
- Registered
- Activity