• Лекции Технопарка. 3 семестр. Проектирование высоконагруженных систем

    • Tutorial


    И снова в эфире наша постоянная рубрика «Лекции Технопарка». На этот раз предлагаем вам ознакомиться с материалами курса «Проектирование высоконагруженных систем». Цель курса — получение студентами навыков проектирования высокоэффективных программных систем.
    Читать дальше →
    • +50
    • 65,4k
    • 5
  • Если бы паттерны были программистами

      Никогда не думали, а что если паттерны ООП спроецировать на работу программистов?

      Singleton-разработчик
      Разработчик с bus-factor=1. Как правило, один из «старожилов» проекта, который приложил руку ко многим компонентам и только он знает как эти части работают вместе. Практически «невыпиливаемый» из проекта, либо без него все начинает «работать как-то не так». По любому вопросу «как оно работает» всегда отвечает «да мне проще самому запилить» и запиливает.
      И еще несколько паттернов...
    • Семейный бизнес в IT. Первые полгода жизни нашего стартапа

        image

        Предисловие


        Соскучились? Я тоже! Пишу статью и понимаю, как же мне этого не хватало. Знаете, мне кажется, что за эти почти полгода, прошедшие с запуска нашего сервиса, объем информации в моей голове вырос десятикратно. Вы не представляете, какая это прокачка для мозгов!
        Ощущение, что полгода назад я вообще ничего не знала. Вроде бы мы так тщательно все рассчитывали, продумывали, опирались на свой предыдущий опыт. Однако, развитие бизнеса вебстудии и развитие стратапа — это совсем не одно и тоже. Уверена, пройдет еще полгода, и я опять буду покусывать себя и грызть мужа, что все нужно было делать по другому.
        Итак, устраивайтесь поудобнее. Сегодня вы узнаете о том, как прошли первые полгода жизни нашего стартапа.
        Читать дальше →
      • Путь инди. Как я начал делать игры

          Приветствую всех! Решил поведать вам свою историю, возможно, кому-то это будет интересно. А если это кого-то вдохновит на подвиги – значит, я не зря взялся за эту статью.

          Коммерция


          Недавно стукнуло 3 года с того момента, как я стал профессиональным гейм-девелопером. Слово «профессиональный» здесь не в смысле «крутой разработчик», а в том плане, что это является моим единственным источником дохода.
          Итого, с 2009-го по 2011-й было разработано 7 игр. Количество геймплеев со всех игр стремится к 100 миллионам, а доходы с этих игр – к [вырезано цензурой]. Но об этом я сегодня писать не буду, ибо в этом мало романтики, и слишком много цифр. Сегодня речь пойдёт о том, что же предшествовало выбору профессии.
          Читать дальше →
        • Особенности русской разработки

            image

            По роду занятий я часто общаюсь с различными русскими и западными командами. Очень частый вопрос — есть ли какая-нибудь специфика в работе наших и как это влияет на разработку?

            Есть очень неплохая книжка о специфике работы русских вообще. Она называется «Русская модель управления». Ее написал А.П.Прохоров (другой, не олигарх). Не буду ее пересказывать. Основная идея в том, что русские по своей природе могут работать только в двух модах. В нестабильном состоянии они могут свернуть горы. В это время мотивация очень высокая. В стабильном расслабленном состоянии — когда никто не пинает — русские вроде как работают плохо и не сильно утруждаются.

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

            Еще один дисклеймер: на реальное поведение людей действует сложившаяся культура в а) команде б) организации в) стране. Причем именно в этом порядке. Есть «прозападные» компании, где влияние наших культурных кодов очень небольшое. В чисто российских компаниях оно просто огромно. Но реально заметить разницу можно только увидев, как различные культуры сталкиваются друг с другом.

            Я буду приводить влияние разных факторов в порядке их важности и силы влияния. Чем выше — тем сложнее это изменить и тем больший эффект это оказывает.
            Читать дальше →
          • Как IT-фрилансеру стать предпринимателем. Часть 3

              Всем привет! Мы продолжаем серию постов о том, как IT-фрилансеру стать предпринимателем. Вы уже знаете, почему ИП лучше, чем ООО и как зарегистрировать ИП самостоятельно. Сегодня мы расскажем, что ждёт предпринимателя после регистрации.



              Краткий путеводитель для начинающих предпринимателей от «Я люблю ИП»
              Читать дальше →
            • Выразительный JavaScript: Рисование на холсте

              • Перевод

              Содержание




              Рисование — это обман.
              М.К.Эшер


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

              Но такое использование DOM – не то, для чего он создавался. Некоторые задачи, типа рисования линии между двумя произвольными точками, крайне неудобно выполнять при помощи обычных элементов HTML.

              Есть две альтернативы. Первая – SVG, масштабируемая векторная графика, также основанная на DOM, но без участия HTML. SVG – диалект для описания документов, который концентрируется на формах, а не тексте. SVG можно встроить в HTML, или включить через тег .

              Вторая альтернатива – холст (canvas). Холст – это один элемент DOM, в котором находится картинка. Он предоставляет API для рисования форм на том месте, которое занимает элемент. Разница между холстом и SVG в том, что в SVG хранится начальное описание форм – их можно в любой момент сдвигать или менять размер. Холст же преобразовывает формы в пиксели (цветные точки растра), как только нарисует их, и не запоминает, что эти пиксели из себя представляют. Единственным способом сдвинуть форма на холсте является очистить холст (или ту часть, которая окружает форму) и перерисовать её на другом месте.
              Читать дальше →
              • +33
              • 94,5k
              • 3
            • A/B тестирование: 70 ресурсов, которые послужат хорошим стартом для начинающих

              • Перевод
              Сделать веб-сайт доходным можно двумя способами. Первый – привлекать больше трафика, второй – повышать конверсию, т.е. побуждать большее количество посетителей становиться покупателями. Скорее всего, вы уже слышали о том, что трафик можно просто купить – сотни интернет-ресурсов предлагают эту услугу. А не лучше ли оптимизировать конверсию? Как узнать, что именно нужно проверить, и как провести A/B тестирование?

              А/В тестированию и оптимизации уровня конверсии посвящено бесчисленное количество ресурсов. Однако, очень редко на сайтах подробно разбирается весь этот процесс целиком от самого начала («Что и как тестировать?») и до конца («Как улучшить конверсию?»).
              Читать дальше →
              • +44
              • 55,3k
              • 5
            • Постинг в группу картинки с текстом с помощью Вконтакте API

              • Tutorial
              Задача запостить текст с картинкой в группу Вконтакте скриптом на PHP простая, тем более API Вконтакте считается понятным и надёжным. Тем не менее, мне не удалось отыскать в Интернете чёткого пошагового руководства для начинающих, которые содержало бы готовые ответы на все мелкие вопросы, возникающие на пути.
              image

              постим материал в сообщество ВК легко и просто
              • –10
              • 85,2k
              • 19
            • Как IT-специалисту сохранить свои финансы?

                Не секрет, что ИТ-специалисты в наше время неплохо зарабатывают. Под «неплохо» подразумевается отсутствие необходимости жить в режиме «от зарплаты до зарплаты» и наличие возможности откладывать какие-то деньги.

                Однако российские реалии таковы, что даже хорошая зарплата сегодня, вовсе не означает сытого будущего хотя бы завтра, не говоря уж о более отдаленной перспективе. Не являясь специалистом в экономике или области финансов, я решил (прежде всего для себя), порассуждать на тему, а как же, собственно, нам, айтишникам, не потерять, и, в идеале, приумножить свои сбережения?
                Читать дальше →
              • Разоблачение 12 юридических заблуждений о программах для ЭВМ



                Заблуждение / опасная привычка На самом деле … Наш совет прост:
                1. Мы создали программу и автоматически стали ее авторами и правообладателями. Для охраны и продажи программы никаких документов оформлять не нужно, ведь она охраняется авторским правом — ©! Действительно: программа для ЭВМ охраняется авторским правом как литературное произведение (п.1 ст. 1259, ст. 1261 ГК РФ).

                Но то, что для возникновения авторских прав не требуется регистрация или соблюдение каких-либо иных формальностей (п.4 ст. 1259 ГК РФ), ни в коем случае не освобождает:
                − от соблюдения набора критериев, установленных законом;
                − от необходимости документально доказать факт создания программы и свои права на них.

                Неоформленный SOFT закон не охраняет.

                Всё просто: если у вас спор о правах на программу, то без документов вы не сможете доказать, что (1) у вас были права и (2) ваши права нарушены, (3) что сама эта совокупность данных и команд на языке программирования является интеллектуальной собственностью (ведь различные версии и релизы никакой новой интеллектуальной собственности не создают).
                То же самое – при постановке на бухгалтерский учёт и оформлении бухгалтерских проводок.

                Коротко говоря: нет документов = нет интеллектуальной собственности = нет нарушений прав = нет компенсации за нарушение прав.
                Оформляйте много хороших и разных документов при создании программ для ЭВМ:
                — договоры с авторами;
                — договоры с подрядчиками;
                — технические задания;
                — протоколы совещаний и тестов;
                — соглашения между соавторами;
                — авторское свидетельство;
                — сертификат признания интеллектуальной собственности;
                — спецификация РИД;
                — свидетельство о регистрации программы для ЭВМ (Роспатент).
                Читать дальше →
              • Основы программирования под Android на примере игры Судоку

                  В статье описаны основные трудности создания приложений под Android.
                  Рассматриваются базовые понятия программирования Android.
                  Для примера описано создание игры Sudoku из книги Hello, Android – Ed Burnette.
                  Осторожно много скриншотов.

                  Читать дальше →
                • Семейный бизнес в сфере IT. Мои три золотых правила

                    image

                    Предисловие


                    Помните мою предыдущую статью? В ней я рассказала о том, как мы с мужем основали собственный бизнес. Точнее, муж основал, а я чуть позже к нему присоединилась.

                    То, чем мы тогда занимались, очень сложно назвать бизнесом. Это скорее была работа в паре. Мы никогда не договаривались: ты делаешь это, а я это. Разделение обязанностей сложилось само собой.

                    Вы спросите: «Кто же в вашей команде главный?». Скажем так, мы оба прекрасно понимаем, кто главный. Но вслух это не обсуждаем, потому как один из нас может обидеться, а вторая слишком много о себе возомнит…

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

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

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



                      Курс посвящён дизайнерским принципам работы со сложными данными и знакомит слушателей с бибилиотекой D3.js — самым мощным и гибким инструментом создания интерактивных визуализаций. Курс состоит из 6 лекций и 6 практических заданий, каждое из которых позволяет применить и закрепить теоретический материал.
                      Читать дальше →
                    • Открытые онлайн-курсы по Python, Linux и… генетике

                        10 ноября стартуют три новых онлайн-курса (MOOC) на русском языке: по программированию на Python, операционной системе Linux, молекулярной биологии и генетике. Курсы созданы преподавателями Санкт-Петербургского Института биоинформатики, чем и обусловлено их разнообразие.

                        Курсы рассчитаны на неподготовленную аудиторию, ведь в институте Python и Linux изучают биологи, а молекулярную биологию – программисты, чтобы потом всем вместе осваивать биоинформатику. Но, даже если вы прекрасно умеете программировать и свободно чувствуете себя в vim, можете посоветовать эти курсы своим студентам или друзьям, либо просто записаться на биологию.

                        Курсы совершенно бесплатны и останутся доступны для самостоятельного изучения под Creative Commons после окончания. Но те, кто хочет жарких дискуссий в комментариях, оперативных ответов от преподавателей и сертификатов по окончанию, могут поучаствовать в ближайшем запуске с дедлайнами (10 ноября – 8 декабря).


                        Читать подробнее о содержании курсов
                      • Выразительный JavaScript: Введение

                        • Перевод


                        Перевод книги Marijn Haverbeke "Eloquent JavaScript". Лицензия Creative
                        Commons attribution-noncommercial license
                        . Код предоставляется под лицензией MIT.


                        Содержание



                        Читать дальше →
                      • Как накормить мозг программиста… или feed your brain

                        Введение


                        Из всех наслаждений, отпущенных человеку в жизни,
                        самое изысканное — шевелить мозгами.
                        (Борис Акунин)


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

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

                        В данной публикации мы рассмотрим, как правильно питаться для жизнеобеспечения мозга и как его разогнать ноотропами (в случае аврала необходимости).
                        Читать дальше →
                      • Готовое решение доступного видеоплеера на HTML5

                          Видеоконтент уже прочно вошёл в мир Интернета и без него уже трудно представить глобальную сеть. Тем не менее, технологии встраивания видео в гипертекстовые документы за прошедшее время прошли определённую эволюцию: от RealPlayer к QuickTime и Flash, а в настоящий момент до встроенной поддержки видео в HTML5. Тем не менее, всё это время различные реализации видеоплееров страдали как от проблем кроссплатформенности и кроссбраузерности, так и от низкого или вообще нулевого уровня accessibility. И если способы борьбы с первой группой проблем в целом понятны и существуют в форме готовых решений, то вот проблемы доступности для подавляющего большинства web-разработчиков и без того, как правило, сложны для понимания, а в отношении видео совсем оставались загадкой. Однако, к счастью, появилось готовое решение и второй проблемы, так что все желающие смогут обеспечить своим пользователям полностью доступный видеоплеер и без глубоких компетенций в web accessibility.
                          Читать дальше →
                        • Масштабирование наоборот: БЭМ-методология Яндекса на небольших проектах

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

                            Скорее всего, вы уже знаете об одной из таких методологий, разработанной Яндексом, — БЭМ. БЭМ утверждает, что трёх сущностей (блоков, элементов и модификаторов) достаточно для написания HTML и CSS, задания структуры кода и компонентной структуры с последующим масштабированием проекта до самого высокого уровня.

                            Я проработал в Яндексе достаточно долго и видел, как эта методология работает на больших проектах. В Яндексе БЭМ используют для разработки CSS- и JavaScript-компонент, с помощью этой методологии также пишут шаблоны и задают зависимости между компонентами. Есть БЭМ-инструменты, поощряются различные эксперименты с кодом, исследования. В масштабах большой компании эти трудозатраты окупаются и дают Яндексу возможность быстро и качественно разрабатывать сотни сервисов одновременно.

                            Могут ли маленькие команды получить от БЭМ то же самое? Я совершенно не был в этом уверен. Всё же БЭМ — абстракция, которая поставляется вместе с инструментами и технологиями. Для маленькой компании польза от переключения на «полный стек» этих технологий — сомнительна, многие из инструментов изначально приспособлены под крупные и сложные задачи. Быть может, тогда полезной окажется сама идея, сама методология?

                            Изначально эта моя статья была опубликована в известном многим журнале Smashing Magazine. Но я решил, что и на Хабре она может быть интересна, ведь многие здесь занимаются собственными небольшими проектами.

                            Читать дальше →
                          • 28 ошибок стартапера в глазах инвестора. Опыт бизнес-ангела

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



                            Управляющий директор венчурного фонда Vantage Point Capital Partners Ричард Хэррок в своей жизни повидал немало элеватор-спитчей и, решив поделиться опытом, составил для Forbes список основных ошибок и поступков, которых стартапер должен избежать во время презентации своего продукта, если хочет обрести благосклонность бизнес-ангела или привлечь венчурные инвестиции.
                            Читать дальше →