Набросок админки в Answers

Мы понимаем, что заниматься администрированием наших продуктов из конфигурационного файла можно, но неудобно. А потому в недрах Deep Shift Labs уже обсуждается, как будет выглядеть административный интерфейс Startyco и какие функции он будет выполнять.

Конечно, это будет один интерфейс на все приложения Startyco, которые вы купите. Такая вот у нас мечта – создать удобные встраиваемые приложения, которые можно администрировать (прошу не улыбаться) из … одного места.

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

Startyco Admin's Dashboard - Users

А вот так может выглядеть интерфейс работы с сообщениями, которые например, SpamAssassin заподозрил как спам. Вы сами будете решать, что делать с подозрительными сообщениями – публиковать и сообщать вам или не публиковать и сообщать вам вначале.

Startyco Admin's Dashboard - Spam

Комментарии в Answers

Одной из планируемых функциональностей Answers будут ‘Комментарии’. Вы можете включить этот режим, чтобы дать возможность вашим пользователям уточнять заданный вопрос или данный ответ. Нам кажется, что в таком режиме Answers будет удобнее пользоваться всем, да и качество вопросов и ответов увеличится.

Comments UI in Answers

Голосование в Answers

В следующей версии Answers мы добавляем возможность голосования за вопросы (например, ‘меня тоже интересует ответ’ или ‘это некорректный вопрос’) и за ответы. Вы сможете использовать голосование, включив его в настройках. Можно разрешить голосование за вопросы, ответы, вопросы и ответы, либо вообще его не использовать.

Нам показалось важным иметь возможность показать всем посетителям сайта распределение голосов за и против. Чтобы на ‘засорять’ интерфейс эта информация, скорее всего, будет показываться при наведении мышки на стрелочки голосования или цифру с количеством голосов. Возможно, есть смысл показывать статистику сразу (без наведения мышки), когда общее количество голосов равно нулю, если голосов за и против поровну.

Voting UI in Answers and Ideas

Read the rest of this entry »

XSS и использование текста с HTML-разметкой

No pasaran!

Мы уже давно работаем над Starty.co Answers, и всё никак не можем остановиться в добавлении новых фич и оттачивании существующих.
С некоторым трудом мы всё-таки решили выпустить первую версию Answers без такой удобной штуки, как разметка текста, типа BBCode. Однако подготовительные работы в этом направлении мы провели, и решили, что в ближайшее время включим в продукт TinyMCE в качестве редактора и модуль Highlight.js для подсветки кусков кода.

Хотя мы пока и отказались от использования полноценной разметки, необходимо было реализовать элементарные вещи – замену концов строк на  <br> и распознавание http(s):// ссылок в тексте и замену их на <a href=”></a>.
Read the rest of this entry »

Установка PHP 5.4.6 на IIS 7 для работы с MS SQL 2008

Instal PHP 5.4.6 on IIS 7 to work with MS SQL 2008

Я решил написать этот пост, поскольку я не нашёл простого и понятного описания установки PHP на Windows и настройки этой не очень распространённой комбинации для работы с MS SQL 2008.

Сейчас мы работаем над переносом самой большой из когда-либо созданных в Deep Shift Labs системы с Windows 2000 и MS SQL 2000 на Windows 2008 и MS SQL 2008. Хочу вкратце рассказать об истории этой системы и зачем, собственно, нам понадобилось устанавливать PHP на Windows. Система насчитывает порядка 800К строк PHP-кода, и работа над ней продолжалась последние 10 лет. Эта система создана для одного из наших заказчиков. Первые несколько лет система работала на FreeBSD, Apache и PostgreSQL. Затем компания-заказчик стала публичной, и у них возникла проблема перехода на коммерческое ПО. Где-то в 2004 нам удалось – благодаря тому, что мы изначально использовали ADODB – с минимальными затратами сначала переехать с FreeBSD/Apache на Windows 2000/IIS 5 (PHP работает как модуль ISAPI), а потом, в 2006-ом, перенести тогда ещё небольшую  как по структуре, так и по размеру, базу на MS SQL 2000.

Самым сложным в том далёком 2006 году было найти драйвер, умеющий работать с MS SQL. Было перепробовано всё, с чем мог работать ADODB и, в конечном итоге, мы остановились на использовании php_dblib.dll от Фрэнка Кромана. Фрэнк в то время поддерживал расширения MS SQL в PHP и очень нам помог дельными советами. Тогдашний драйвер php_mssql.dll использовал ntwdblib.dll от Microsoft, которая плохо работала с датами и длинными текстами. php_dblib.dll использовала dblib.dll из FreeTDS, и мы не нашли никаких проблем в её работе. Read the rest of this entry »

Как много имиджей хороших…

Sparklines galore

Помните в детстве, после того как сами узнали ответ, мы любили спрашивать других детей “Что тяжелее – килограмм ваты или килограмм гвоздей?”. Этот пост посвящен подобной проблеме, только в сфере веб-разработки :) Ладно, не буду больше испытывать ваше терпение, мы поговорим про выбор оптимального способа отображения большого кол-ва графиков на одной странице.

Но для начала немного предыстории. Компания Deep Shift Labs, в которой я имею честь работать, с 2002 года занимается разработкой и поддержкой весьма большой системы для одного нашего клиента. При разработке нового приложения для этой системы мы решили использовать небольшие графики, так называемые sparklines. Что это такое, как мы их нашли и как реализовали мы описывали в этом посте. Тем, кто не читал указанный выше пост, хотелось бы пояснить, почему мы остановились на генерации графиков с помощью PHP: все отчёты системы создаются не только в формате HTML, а и в PDF и Excel. Если реализовать графики в JS, то для вставки их в PDF или Excel всё равно придётся генерировать картинку. Так зачем же делать одну и ту же работу дважды? Read the rest of this entry »

Маркетинг: делись тем, что знаешь и умеешь

Jason Fried at ChicagoConvergence 2009

Мы продолжаем делать переводы выступлений, содержащих идеи, которые нам импонируют и которым мы сами следуем. Наша первая работа – выступление Дэвида Хейнемейера Ханссона перед школой стартапов в 2008 году. Сегодня мы предлагаем вашему вниманию вторую – выступление Джейсона Фрида на конференции ChicagoConvergence в 2009 году. В этот раз мы решили не заниматься озвучкой – это занимает слишком много времени.

Мы получили разрешение у 37signals, и решили в этот раз попробовать заказать английский транскрипт в SpeechPad. Это относительно недорого – 1 доллар за минуту, и очень качественно. Потом, уже имея английскую версию, мы сделали её русский перевод. Организаторы ChicagoConvergence не откликнулись на нашу просьбу добавить наш перевод к оригиналу, поэтому нам пришлось взять их ролик на YouTube, разрезать её пополам и добавить английские (раз уж они у нас есть) и русские субтитры. Добавление английских субтитров на YouTube не требует никакой специальной подготовки – они расставляются автоматически, а вот с русскими пришлось немного повозиться, так как YouTube требуется специально подготовленный файл с маркерами времени.

Видео с субтитрами на YouTube: часть 1, часть 2.
Текст русского перевода мы публикуем на Хабрахабре.
Read the rest of this entry »

Ускоряемся? Ускоряемся!

В последнее время в веб-пространстве стало хорошим тоном оптимизировать скорость загрузки страниц своих ресурсов. Честно говоря я к этому скептически относился – не секрет, что скорость решений “последней мили” растет не по дням, а по часам, так что если речь идет не о мультимедийном развлекательном портале, то особого смысла в оптимизации я не видел. Однако, как мы писали, нами был запущен сервис облачного тестирования Nerrvana и оказалось, что страницы маркетингового сайта грузятся совсем не так быстро, как нам этого хотелось бы. Ну что же, я закатил рукава рубашки и приступил к работе.

Буквально через 10 минут активного гугления я понял, что все рекомендации повторяются и потому остановился на самой известной – “Best Practices for Speeding Up Your Web Site” от Yahoo. Если вы еще не знакомы с ней, то настоятельно рекомендую сходить прямо сейчас по ссылке, указанной ранее. Это поможет вам понять почему появился данный пост. Не знаю как у вас, у меня страница от Yahoo вызвала примерно такую реакцию:

- Ух-ты, наконец полный список рекомендаций, да еще и с пояснениями
- Хм, ну ладно, попробую и это
- А вот это тоже нужно?
- Эта страница вообще когда-нибудь закончится?
Read the rest of this entry »

Как мы используем Kayako – Часть II

How do we use Kayako - Part II

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

Практически все ошибки были устранены разработчиками достаточно быстро. Правда, одну ошибку нам пришлось даже доказывать после двухнедельного обмена письмами, и доказательство заняло один час после того, как нам выдали открытый код. Поскольку мы сами разрабытываем веб-приложения, то после настройки Каяко руки зачесались сделать собственную простую в настройке систему поддержки. Если вы – тоже разработчики, то вы нас понимаете или поймёте после более близкого знакомства с Каяко.
Read the rest of this entry »

Минимальная установка CentOS 6 на VMware с kickstart-ом

В этом посте я хотел бы рассказать о том, как установить CentOS 6 с минимальным количеством софта в виртуальной машине VMware, потратив на это с помощью kickstart файла минимум времени. Вам понадобится VMWare Workstation 8, а также netinstall диск для i386 или x86_64. Указываемые мною ссылки являются ближайшими ко мне зеркалами, а вы можете загрузить необходимое из “мест не столь отдалённых” от вас.
Нам даже не понадобится Virtual CloneDrive для монтирования образа на винде, так как VMware может устанавливать операционную систему прямо из .iso файла.

Давайте начнём с создания новой виртуальной машины.
Read the rest of this entry »

Заблудились? Зайдите в архив.