Pull to refresh
48
0
Сергей Семенов @phgrey

webdev — универсал: front, back, dba, devops

Send message

Визуализация связей внутри класса с помощью GraphViz

Reading time2 min
Views7.2K
Прочитав книжку Р. Мартина «Чистый код», я исполнился решимостью и принялся за рефакторинг своего старого, большого и грязного проекта.

И захотелось мне посмотреть, как в одном из самых простых классов связаны между собой методы и поля. PhpCallGraph, быстро нагугленный, наладить не удалось (какие-то проблемы с xdebug), и к тому же, судя по примерам, он показывает связи во всём проекте, трассируя его, а мне нужно было исследовать один класс.

Я решил написать собственное решение, и вот что получилось.
Красивые картинки и не только
Total votes 41: ↑39 and ↓2+37
Comments19

Социальные игры: мечты или реальность

Reading time5 min
Views10K
Приветствую всех хабражителей.

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

Начну с вопросов, которые сам себе задавал на начальном этапе и постараюсь подробно ответить.

1. Главное идея — правда ли это?
2. Что лучше flash или iframe?
3. Что же все-таки нужно для того чтобы начать разработку?
4. Какие методы раскрутки наиболее эффективные и как стоит планировать свою маркетинговую деятельность?
5. Стоит ли привлекать инвесторов или издателей?
6. Ну, и самое главное, срок окупаемости проекта и возможная прибыль, какова она может быть?
Читать дальше →
Total votes 66: ↑56 and ↓10+46
Comments64

TDD в JavaScript. Разработка приложения

Reading time9 min
Views14K
Всем привет. Данная статья посвящается методологии Разработки через тестирование (TDD) в применении c JavaScript.
Напишу лишь вкратце о методологии TDD, более подробную информацию можно почерпнуть из ссылки выше.

Разработка через тестирование подразумевает, что перед написанием кода необходимо:
  • создать тест, который будет тестировать несуществующий код, тест соответственно не пройдет
  • написать код и убедиться, что тест прошел
  • почистить код
  • повторить

Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments26

Контроль изменения структуры БД

Reading time2 min
Views8.9K

Преамбула


Пару лет назад я и мои сотрудники столкнулись с проблемой сопровождения большого количества аналогичных БД на удаленных филиалах. Удалены они иногда на тысячи километров, а объемы исчислялись гигабайтами – что не позволяло использовать какое-либо зеркалирование серверов. Осложнялась ситуация мелкими отличиями, т.е. 95% бизнес-логики филиалов совпадало, но было ещё 5%, которые сильно мешали и ни о какой автоматической обработке группы филиалов не было и речи.
Читать дальше →
Total votes 59: ↑54 and ↓5+49
Comments42

Еще немного о TDD и модульных тестах

Reading time5 min
Views3.7K
На хабре полно адептов TDD, и уже не раз всплывали статьи про разработку методом тестирования. Хочу внести и свои пять копеек статьей про этот замечательный инструмент.

При взгляде новичка на тесты сразу возникает вопрос: а зачем вообще писать лишний код? Вроде как преимущества TDD никто не отрицает, но находятся какие нибудь причины: «да, я слышал что TDD полезен в больших проектах, но у нас проект маленький», «в нашем проекте слишком много изменений, поэтому тесты для нас слишком большая обуза» и так далее. Попробую рассказать как модульные тесты помогают мне в работе и поделиться опытом использования.
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments29

Взаимодействие bash-скриптов с пользователем

Reading time4 min
Views146K
Любой приказ, который может быть неправильно понят, понимается неправильно (Армейская аксиома)

Редкий скрипт лишен необходимости общения с пользователем. Мы ожидаем, что программа (утилита) будет выполнять то, что нам от нее хочется. Следовательно, нужны инструменты влияния на них, да и программа сама должна объяснить, как продвигается ее работа.
Данным топиком я хочу рассмотреть несколько способов взаимодействия bash-скриптов с пользователем. Статья рассчитана на новичков в скриптинге, но, надеюсь, люди опытные тоже найдут что-нибудь интересное для себя.
Итак, приступим...
Total votes 89: ↑87 and ↓2+85
Comments48

Backbone.js для «чайников»

Reading time13 min
Views288K
Backbone.js для чайников
Как то поздним вечерком мне пришла мысль изучить Backbone.js и привязать его к уже написанному на jQuery сервису. Сервис уже серьёзно расширился и меня достало это нагромождение обработчиков кликов, запросов и логики. Поэтому, я как усердный школьник полез в официальную документацию. Но либо я тупой, либо мой английский меня подкачал, либо то и другое вместе, но я не черта не понял. Я прочитал уже второй раз, внимательно, и для особо одарённых мест использовал google translate. Прочитал также и пример ToDo List. Всё показалось понятно, ровно до той поры пока я не стал писать. После чего я взял всё что нашел по этой библиотеке, как на английском так и переводы. Прочтя кипу документации я решил, что сейчас вроде всё понял. Я напрягся, но… Не вышел каменный цветок у мастера Данилы, т.е. вышло, но это явно был не цветок, и камень как то неправильно пах. Тогда, как прилежный ученик, я решил написать «Hello, KittyWorld» с нуля. Попутно комментируя и сохраняя шаги в hg, у меня получилось введение в backbone.js framework для таких как я, особо одарённых.
Данные 7 шагов с комментариями.
Total votes 113: ↑110 and ↓3+107
Comments51

Мой подход к созданию ТЗ на шаблонные сайты

Reading time6 min
Views20K
eyestopper

Вместо эпиграфа.


Поймал дед золотую рыбку. Она ему говорит:
— Чего тебе, дед?
— Хочу чтоб мой аппарат был длиной до колен.
Взяла рыбка и укоротила деду ноги.
Мораль: ставьте корректно техническое задание.

Добрый день великий и могучий Хабр.
Некоторое время назад было несколько постов о технических заданиях (Как поставить задачу для простого (шаблонного) сайта, Почему мы никогда не составляем ТЗ. А что взамен?, Правила технического задания), которые хотелось бы продолжить и рассказать про мой подход к написанию ТЗ на шаблонные сайты.
Читать дальше →
Total votes 116: ↑110 and ↓6+104
Comments70

Открытие офшорных банковских счетов с помощью Payweb.com

Reading time1 min
Views31K
image

Здравствуйте, уважаемые хабропользователи!

Этим постом хотелось бы обратить ваше внимание на возможность удалённого открытия полноценных офшорных банковских счетов для частных лиц с помощью нашего сервиса.
Читать дальше →
Total votes 64: ↑56 and ↓8+48
Comments115

Инструменты командной строки для веб-разработчика

Reading time3 min
Views39K
Жизнь веб-разработчика омрачена сложностями. Особенно неприятно, когда источник этих сложностей неизвестен. То ли это проблема с отправкой запроса, то ли с ответом, то ли со сторонней библиотекой, то ли внешний API глючит? Существует куча различных прилад, способных упростить нам жизнь. Вот некоторые инструменты командной строки, которые лично я считаю бесценными.
Читать дальше →
Total votes 227: ↑217 and ↓10+207
Comments30

Авторизация через ВКонтакте, Mail.ru и другие для самых начинающих — 1

Reading time4 min
Views48K
На хабре и других ресурсах есть туториалы, однако в каждом упущен какой-нибудь незначительный момент, вопросы по которому можно видеть на различных форумах. Так как недавно столкнулся с задачей подружить один сайт с Контактиком и Майл.ру, то решил, пока свежа память, сделать свое небольшое руководство с блэкджеком так сказать, используя родные виджеты этих социальных сетей.
Читать дальше →
Total votes 111: ↑100 and ↓11+89
Comments45

10 Полезных Горячих Клавиш для NetBeans 6

Reading time2 min
Views26K
Прочитав топик mikeborozdin вспомнил что сам не давно перешел с Zend Sudio for Eclipse на NetBeans. Дело в том что я долгое время использовал Эклипс для php/python проектов и настолько привык к ней что посмотреть что за зверь NB, по совету коллеги, долго не решался. Когда же все таки скачал и установил NB был удивлен практичностью и удобством последней. Примерно в тоже время в интернете я нашел статью о полезных горячих клавишах для NB, перевод которой под катом. Буду рад если она сэкономит вам время при работе.

1. Move/copy up/down Выделенный текст можно перемещать вверх или вниз при помощи комбинации
Ctrl-Shift-↑↓. Если вместо Ctrl удерживать Alt — выделенный текс скопируется.

image

Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments8

Ликбез по уязвимостям в веб-приложениях, а также самые частые ошибки разработчиков

Reading time7 min
Views38K


Эта статья — продолжение цикла статей по информационной безопасности в веб-приложениях (и не только).

Вообще думал написать о «белом ящике», но я решил что нужно сначала ликвидировать возможные пробелы у целевой аудитории (в основном веб-разработчики) в этой области.

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

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

Как обычно — ответственность за все полученные знания только на читателе :)

Читать дальше →
Total votes 171: ↑150 and ↓21+129
Comments75

Обзор CDN-сервиса CloudFlare

Reading time3 min
Views210K
Привет, хабр! Сегодня я расскажу о сервисе CloudFlare. Куча возможностей, помощь в переносе, и многое другое.
Хотелось бы начать с того, что данным сервисом можно пользоваться бесплатно. В CloudFlare предусмотрены PRO возможности, но лично мне эти возможности не нужны. Стоимость PRO довольна высока — $20 в месяц.
Читать далее
Total votes 58: ↑45 and ↓13+32
Comments86

Ускоряем wordpress

Reading time11 min
Views10K
Привет.
Думаю, среди читателей хабра найдется немало тех, кто имеет stand-alone blog на движке wordpress.

Так вот, для вас, дорогие мои, у меня есть две новости, как водится, плохая и хорошая.
Плохая состоит в том, что wordpress — довольно-таки тормознутая штука.
Виноваты в этом в основном криворукие производители тем и, особенно, криворукие производители плагинов. Особенно кривой плагин, на мой вкус, wp-ajax-edit-comments, который является образцом быдлокодинга.

Хорошая — в том, что это можно поправить.

Делается это примерно так:
Total votes 63: ↑52 and ↓11+41
Comments35

6 способов убить Ваши сервера — познаем масштабируемость трудным путем

Reading time5 min
Views18K
Узнать, как отмасштабировать Ваше приложение, не имея при этом никакого опыта, — это очень нелегко. Сейчас есть много сайтов, посвященных этим вопросам, но, к сожалению, не существует решения, которое подходит для всех случаев. Вам по-прежнему необходимо самому находить решения, которые подойдут под Ваши требования. Так же, как и мне.

Несколько лет назад ко мне пришел мой босс и сказал: «У нас есть новый проект для тебя. Это перенос сайта, который уже имеет 1 миллион посетителей в месяц. Тебенеобходимо его перенести и убедиться, что посещаемость может вырасти в будущем без всяких проблем.» Я уже был опытным программистом, но не имел никакого опыта в области масштабируемости. И мне пришлось познавать масштабируемость трудным путем.
Читать дальше →
Total votes 158: ↑148 and ↓10+138
Comments73

Как хороший договор спасает нервы и монетку

Reading time14 min
Views62K
Договоры, отчеты, акты — кому охота заниматься этой скукотой, когда вокруг бьет ключом и фонтанирует идеями креативная жизнь? Особенно, если заказчик снисходительно хлопает творческого подрядчика по плечу: «Да ладно, зачем какие-то договоры. Мое слово — закон!» Остается только радостно согласиться и приступить к работе.

На заре существования нашего агентства мы вообще не стремились формализовать отношения с дорогими клиентами. Типовой договор умещался на двух машинописных листах. Содержал он минимум информации: предмет договора, сроки, цена. Если заказчиков немного, и все они — старые знакомые, то в известной степени можно положиться на их добропорядочность. Но когда клиентская база активно растет, то и проблемы множатся: задерживают выплаты, не выполняют обязательства, злоупотребляют лояльностью исполнителя. Столкнувшись с ними в полном объеме, мы собрались, подумали и составили новый типовой договор.
Читать дальше →
Total votes 140: ↑137 and ↓3+134
Comments51
12 ...
8

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity