Search
Write a publication
Pull to refresh
4
0
krugvs @krugvs

User

Send message

Обзор и классификация CMS по категориям (2013)

Reading time30 min
Views237K
Недавний поиск списка CMS, на примере которых можно было бы объяснить студентам архитектуру и структуру сложного web-сайта, привел меня к любопытной статье с классификацией CMS, которая, однако, на текущий момент немного устарела, да и написана несколько сумбурно. Это подвигло меня составить новый обзор, собрав больше решений и дополнив их по возможности ссылками на официальные сайты, страницы закачки и демо-панели.

Я рассматривала CMS на php, в основном бесплатные, за некоторым исключением. В результате на текущий момент получился такой набор:

CMS общего назначения: Alto CMS, Cogear, Contao, Cotonti, DataLifeEngine, Drupal, ImageCMSCorporate, Joomla, Host CMS, MaxSiteCMS, MODX, MosquitoBloodyMary, ReloadCMS, Wordpress
Галереи: Coppermine, Gallery (Gallery2, обновленная до версии 3), Koken, MG2 = MiniGal 2, Pikateka, SimpleViewer, Zenphoto
Социальные сети: Elgg, Explay CMS, InstantCMS, LiveStreet, BigStreet
Форумы: IPB (Invision Power Board), Phorum, phpBB, phpBBex, PunBB, Simple Machines Forum, Vanilla, vBulletin
Интернет-магазины: ECShop, Magento, OpenCart, Семейство osCommerce, Prestashop
Сайты-визитки без SQL-базы: GetSimple, Monstra, Nanote, Stacey, CMS Чайник
Читать дальше →

Кто такой «Full Stack» разработчик?

Reading time4 min
Views34K
Разумно ли ожидать, что каждый разработчик будет мастером в любом аспекте процесса разработки? Вероятнее всего нет, однако Facebook может потребовать от вас это. Будучи на конференции OSCON, работник Facebook сказал мне, что они нанимают только «Full Stack» разработчиков. Хорошо, но что это значит?

Для меня, «Full Stack» Разработчик — это кто-то, кто знаком с каждым аспектом: превосходно владеющий многими из них и проявляющий неподдельный интерес ко всем технологиям.

Квалифицированные разработчики, хорошо знакомые со всеми аспектами, могут существенно облегчить жизнь окружающим их людям. Поэтому я так против жесткого разделения труда на рабочем месте. Конечно, в больших организациях политика и коммуникационные проблемы мешают этому. Я считаю, что суть политики найма Facebook в том, что если умные люди используют свои головы и свои сердца, то лучший продукт можно сделать за меньшее время.
Читать дальше →

Разработка web API

Reading time9 min
Views291K

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше

Путь JavaScript модуля

Reading time28 min
Views121K


На момент написания этой статьи в JavaScript еще не существовало официальной модульной системы и все эмулировали модули как могли.

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

Вот в JavaScript своя атмосфера — в языке нет официальных модулей, более того все файлы лежат удаленно, один поток приложения. Приходится постоянно решать какие-то странные проблемы с загрузкой, хитро паковать модули в один файлы, чтобы ускорить время загрузки. Бывает, что нужно воевать с двойными стандартами, адаптировать модули другого формата.

Дело в том, что раньше не думали, что на JavaScript можно делать огромные проекты, а не просто «пропатчить DOM», поэтому о модулях не думали. Да и вообще не думали о будущем. И тут Внезапно будущее нагрянуло! Все вроде-бы уже есть, а модули в JavaScript, мягко говоря, запаздывают. Поэтому разработчикам приходится крутиться и выдумывать какие-то эмуляторы модульности.

Думаю многие из вас читали прекрасную статью Addy Osmani Writing Modular JavaScript With AMD, CommonJS & ES Harmony, которая стала одной из глав его книги Learning JavaScript Design Patterns в этой статье рассказывается про «современные» JavaScript модули или же читали достаточно старую статью JavaScript Module Pattern: In-Depth 2010 года про «старые» модули.

Я не буду переводить эти статьи и не буду делать из них солянку. В своей статья я хочу рассказать о моем модульном пути. О том как я проделал путь от «старых» модулей к «новым» и что использую сейчас и почему.
Читать дальше →

Загадка выпадающего списка «Амазона»

Reading time2 min
Views192K
Бен Кэменс обнаружил, что в выпадающем списке Shop by Department на сайте «Амазон» ховер-эффект происходит очень быстро, абсолютно без какой-либо задержки. Тем самым происходит нарушение старого, выработанного ещё в 90-х годах прошлого века правила: перед отображением пункта подменю необходим так называемый гистерезис, запаздывание.



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

Бесплатные звонки в США и Канаду с любого SIP устройства

Reading time6 min
Views66K
image

Как многие уже могли догадаться, речь пойдёт о возможности, которую предоставляет сервис Google Voice. В посте трёхгодичной давности уже описывался процесс регистрации аккаунта в GV. При этом можно было принимать звонки на SIP устройства, но для инициализации вызова всё равно приходилось заходить в аккаунт и звонить оттуда, что довольно неудобно. В этом посте я расскажу о том, как полностью подружить Google Voice и SIP.
Читать дальше →

8 Параметров социальной жизни команды: как измерить неизмеримое

Reading time4 min
Views18K
Около полугода назад мне в руки попала книга Чарли Пелерина How NASA builds teams. В книге описывались социальные проблемы крупных технологических проектов, которые стоили миллионов долларов космической промышленности США.

В книге Чарли я подчерпнула ряд идей об измерении социального контекста проекта. И провела некоторые наблюдения с командами гибкой разработки. Думаю, лучше всего систему NASA 4-D лучше применять для тематической командной ретроспективы.

Однако, независимо от используемого процесса и зрелости команды, описанные ниже 8-мь социальных параметров довольно интересно обсуждать. Разговор о них может дать ряд идей об усилении командного взаимодействия и социальных факторов успеха проекта.

По каждому из пунктов я описала базовое значение “максимума”. Читая описание социальных параметров, попробуйте задаться вопросом: “Насколько хорошо функционирует этот аспект социальной жизни нашей команды?”
Читать дальше →

Свободное дистанционное образование

Reading time8 min
Views58K
Свободное дистанционное образование. Дистанционное обучение своими руками, или как создать площадку для вебинаров на основе свободного программного обеспечения.
Здравствуйте, уважаемое сообщество!
Данная статья посвящена вопросу организации дистанционного образования (или, как сейчас модно говорить, e-learning) и предназанчена, в первую очередь, сотрудникам IT-служб ВУЗов и других образовательных учереждений, перед которыми возникла проблема технической поддержки мероприятий в дистанционной форме. Так же статья будет интересна всем, кто так или иначе связан с организацией дистанционного образования.
Аннотация: в статье рассмотрена возможность построения дистанционной образовательной площадки на основе свободного программного обеспечения для занятий с малыми аудиториями (до 50 человек) в режиме вебинара с интерактивными элементами.
Ключевые слова: дистанционное образование, moodle, bigbluebutton


Читать далее...

Видео: Мама впервые тестирует Windows 8, Ubuntu 12.10, Windows 1.0, Windows 3.1, Linux Mint Cinnamon 14, OSX 10.2, Elementary OS Luna, Kubuntu, Zorin OS 6.1, MS-DOS 6.22 и Microsoft Bob!

Reading time2 min
Views106K
image

В форумах не утихают споры о том, удобна ли Windows 8 или нет, является ли шагом вперед, или шагом назад. В качестве аргументов защитники windows любят говорить, что «пользователи полагаются на обзоры экспертов-ретроградов», «не пробовали windows 8», «что она почти ничем не отличается от Windows 7» и т.п.

Наверняка сторонники Win8 опять заминусуют карму, но не могу не поделиться. Сегодня случайно наткнулся на видео (местами очень смешное): австралиец попросил свою маму, которая обычно работает в Windows XP, протестировать Ubuntu 12.10 и снял процесс на видео. Оказалось, что они (вернее, его мама) протестировали целый ряд ОС, и даже Microsoft Bob!
  • Windows 8
  • Ubuntu 12.10
  • Windows 1.0 (1985)
  • Windows 3.1 (1992)
  • Linux Mint Cinnamon Edition 14 (2012)
  • MAC OSX 10.2 Jaguar (2002)
  • Elementary OS Luna Beta 1 (2012) — новое
  • Kubuntu 12.10 (2012) — новое
  • Zorin OS 6.1 (2012) — новое
  • Joli OS 1.2 (2011) — новое
  • MS-DOS 6.22 (1994) — новое
  • Microsoft BOB (1995)!

Очень любопытный проект (каждое видео примерно 15 минут):
Читать дальше →

oDesk для начинающих

Reading time6 min
Views502K

Зачем?

Вообще, идея этого поста пришла мне в голову в тот самый момент, когда я, не имея до этого за плечами полноценного опыта фриланса, решил всерьез освоить oDesk. Да, если кто не знает, oDesk — это одна из крупнейших в мире фриланс-бирж. Итак, дело было в июле этого года. Официальной работы к тому времени у меня уже полгода как не было, все подработки закончились, новых серьезных заказов не предвиделось, и oDesk представлялся мне весьма перспективным вариантом. Аккаунт, как водится, был зарегистрирован «про запас» еще за год до того, но висел все это время без дела, поэтому начинать нужно было с нуля. При этом я был почти уверен, что руководство, хотя бы самое краткое, на тему, как и с чего начинать, я где-нибудь (уж на Хабре-то точно!) да найду.
Возможно, я плохо искал. Однако все, что мне попалось по теме, сводилось только к тому, что не нужно сразу загибать цены, лучше начинать с небольших. Примерная цитата: «начинайте с $10 в час, со временем, дорастете и до $15». Дорастать до $15, да еще и со временем, мне категорически не хотелось, я был уверен, что можно зарабатывать значительно больше. Да и кроме того, меня волновало огромное количество вопросов. Как заполнять профиль? На какие проекты откликаться? Как составлять cover letter? Как, черт побери, получить этот первый заказ, когда все тебе отказывают?
В тот момент я решил, что если все у меня получится, обязательно напишу то самое руководство для новичков, которого я не нашел.

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

Коллекция паттернов поведения для элементов отзывчивого веб-дизайна

Reading time1 min
Views29K
Думаю любому современному дизайнеру или верстальщику рано или поздно в голову приходила мысль «А почему бы на этом проекте не использовать принципы отзывчивого веб-дизайна?». Пожалуй, сложно найти человека, который не слышал о responsive design в наше время, когда сёрфить веб могут с телефона, микроволновки и тапочек. Приступая к работе над подобным проектом, неплохо было бы иметь под рукой примеры возможного поведения лейаута и его отдельных элементов.
Ну же, где паттерны то?!

История об аспирантуре в США. Часть 2: Стоимость жизни в США

Reading time7 min
Views96K
Не так давно я выкладывал историю о поступлении в аспирантуру в США, теперь же я расскажу немного о жизни аспиранта и о финансовых вопросах поступления и стоимости жизни в США на примере своих реальных цифр (большая часть цифр указаны для Южной Каролины).
Кому интересно, добро пожаловать под кат

Алгоритмы? Не, не знаю

Reading time3 min
Views109K

Введение


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

16 бесплатных курсов Стэнфорда на осенний семестр

Reading time2 min
Views77K
Начался новый учебный год, пора снова садиться за учебники, то есть за экраны компьютеров. Этой осенью Стэнфордский университета расширяет программу учебных курсов, которые бесплатно преподаются через интернет, с последующей выдачей сертификатов. Студентам предлагается 16 онлайновых курсов. Каждый найдёт там себе что-нибудь интересное: криптография, математика, алгоритмы, ИТ-предпринимательство, финансы и т.д. (полный список под катом).

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

Как гуманитарию стать программистом?

Reading time6 min
Views227K
Я начал писать этот пост два месяца назад еще до появления цикла постов «Хочешь быть программистом, стань им». Я читал комментарии к статьям, переписывал статью. В конечном счете, учтя все замечания от людей, которые убеждены, что для программирования нужны какие-то специальные мозги, мой им ответ: «Для нежелания чего-либо делать, сгодится любое оправдание».

Итак, как гуманитарию научиться программировать?
Ответ. Надо следовать принципу: «Глаза боятся, руки делают».

Картинка для привлечения внимания. Заменил на котика, предыдущая напоминала воспаленный мозг.

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

«Сложно о простом». Функции-конструкторы — как объекты,(prototype). Объекты,(__proto__). constructor, ={}, как функция-конструктор new Object()

Reading time9 min
Views83K
В прошлый раз мы попытались разобраться со следующими вещами:

  • 1. Не смотря на расхожее мнение «всё в JS является объектами» — это не так, мы выяснили, что из 6 доступных программисту типов данных аж 5 является примитивами и лишь один представляет тип объектов.
  • 2. Про объекты мы узнали, что это такая структура данных, которая содержит в себе пары «ключ-значение». Значением может быть любой из типов данных (и это будет свойство объекта) или функция (и это будет метод объекта).
  • 3. А вот примитивы – это не объекты. Хотя с ними и можно работать как с объектом (и это вызывает заблуждение что примитив – это объект), но…
  • 4. Переменные можно объявить как по простому (литерально) (var a = ‘str’), так и через функцию-конструктор (обёртка)(var a = new String(‘str’)). Во втором случае мы получим уже не примитив, а объект созданный конструктором String(). (что за магический оператор new и что такое функция-конструктор мы узнаем дальше).
  • 5. Узнали, что именно за счёт создания обёртки над примитивом (new String(‘str’)) c ним можно работать как с объектом. Именно эту обёртку создаёт интерпретатор вокруг примитива, когда мы пытаемся работать с ним как с объектом, но после выполнения операции она разрушается (поэтому примитив никогда не сможет запомнить свойство, которое мы ему присвоим a.test = ‘test’- свойство test исчезнет с обёрткой).
  • 6. Узнали, что у объектов есть метод toString() который возвращает строковое представление объекта (для типа number valueOf() – вернёт числовое значение).
  • 7. Поняли, что при выполнении операций конкатенации или математических операциях примитивы могут переопределить свой тип в нужный. Для этого они используют функции-обёртки своих типов, но без оператора new (str = String(str)).(в чём разница и как это работает, поговорим дальше)
  • 8. И наконец, узнали, что typeof берёт значения из жёстко зафиксированной таблицы (вот откуда ещё одно заблуждение, основанное на typeof null //object).

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

Разворачиваем локальный сервер на Windows

Reading time8 min
Views371K

Несколько дней назад меня очередной раз посетила Мысль. Мысль была не нова и довольна навязчива: «давай перейдем на Windows8. Ну пожааалуйста». И так как отогнать её никак не получалось, я запаслась чаем и печеньками и приступила.

На установку системы и всех необходимых программ ушло не более двух часов, но затем наступил самый интересный момент: мне нужно было развернуть рабочее окружение, а именно — GIT + локальный сервер (Apache, MySQL, PHP, nginx, memcached, mongodb). Помятуя об опыте предыдущих установок, на этот раз я решила весь процесс задокументировать и сохранить для потомков.

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

Главный принцип хорошего кода

Reading time9 min
Views86K
За двадцать лет разнообразного программирования я сформулировал, убежден, главнейший принцип хорошего кода. Опираясь на него, мне и моим коллегам удавалось приводить в порядок самый страшный код, объединять в команде малосовместимых программистов и годами поддерживать системы без лишнего нытья.

Прочтение этой статьи: 15 минут
Осмысление методики: 10 минут
Ощутимые результаты: 30 минут

Итак,

Кодекс Чести

Reading time2 min
Views14K
Я хочу написать об одной из основных вещей, которые делают мою жизнь разработчика полезной и интересной.
Я заметил, что большинство людей, с которыми я имел честь работать, были связаны обещанием, неким неписанным «кодексом чести». Он не совсем похож на самурайский Бусидо, поэтому позвольте мне вкратце описать его:

Кодекс и долг

  • Моя работа — отражение моего мастерства. Лично я отождествляю это с качеством.
  • Если я возложил на себя обязательства касательно проекта и сроков сдачи, то я сделаю всё возможное, чтобы сдержать своё слово.
  • Это дело чести — выполнять свои обещания. Я готов идти на личные жертвы, чтобы сдержать свое слово.
  • Обязательства и жертвы сугубо добровольны и руководствуются лишь внутренней мотивацией. Дополнительное внешнее давление рассматривается как нарушение Кодекса: я уже выполняю свою работу настолько хорошо, насколько могу.


Общение

  • Я открыто признаюсь, если я чего-то не понимаю.
  • Субординация не важна в обсуждении технических деталей. Имеет значение убедительность аргумента, а не должность говорящего.

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

Введение во фреймворки (Часть 2)

Reading time6 min
Views12K
Тестирование
Часть 1

Второе поколение фреймворков

Это поколение является промежуточным уровнем фреймворков автоматизированного тестирования, среди них могут быть и достаточно простые фреймворки, а могут быть и достаточно хорошо спроектированные. Подобные фреймворки должны рассматриваться в случае, когда поддержка автотестов является важным фактором. Хорошее понимание этого поколения фреймворков является важным, так как на концепциях фреймворков этого уровня основываются фреймворки третьего поколения.
К фреймворкам второго поколения относятся фреймворки ориентированные на данных и фреймворки использующие функциональную декомпозицию. Большинство фреймворков этого уровня являются гибридами и используют оба подхода, но так как возможно использование только одного из них, то эти подходы будут рассмотрены независимо друг от друга.
Читать дальше →

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity