• Как правильно именовать сложные действия в REST API?

    @napa3um
    В идеологии REST нужно мыслить с точки зрения декомпозиции предметной области задачи на объекты-ресурсы (с соответствующими урлам), а глаголы (действия) строго фиксированные (закреплённые, в том числе, в протоколе HTTP). Этим достигается масштабируемость (во всех смыслах) разрабатываемого веб-сервиса. Если в прикладной области видится большое разнообразие действий, а не объектов, то их можно воспринимать в стиле документов документооборота или транзакций платёжной системы. Например, пуск ракеты по стране можно представить в виде создания документа (транзакции) "пуск ракеты по стране". Оформить можно и как вложенный в ракету ресурс, и как корневой ресурс с атрибутами "ракета" и "страна", - это зависит от физической и логической организации сервиса. Такой ресурс-документ можно снабдить идентификатором и дать ему возможность обрабатываться на любом сервере, входящем в инфраструктуру веб-сервиса, читать из него автоматически сгенерированные атрибуты типа "время запуска", "статус полёта", т.п. В общем, основная идея комментария: мыслить в терминах документооборота, и сервис получится логичным, поддерживаемым, масштабируемым, как и задумано REST'ом.
    Ответ написан
    Комментировать
  • Чем можно нарисовать «вебдванольный» график на ~80 000 точек?

    KEKSOV
    @KEKSOV
    Highchart умеет рисовать на сервере. Вот его демки
    Ответ написан
    Комментировать
  • Агрегация статистики в SQL-хранилище?

    Stdit
    @Stdit
    Вариант с map-reduce — не факт, что будет более быстродействующим решением. Поможет денормализация. Чтобы избежать агрегации на каждом запросе статистики, и ударных нагрузок на процессор и память во время таких запросов, логично во время занесения каждой очередной записи увеличивать счетчики, находящиеся в специальных таблицах. Для этого на вставку можно поставить триггер, инкрементирующий нужный счетчик (счетчик текущего часа, счетчик текущего дня). Разумеется, под каждую форму статистического запроса потребуется отдельный счетчик.
    Ответ написан
    1 комментарий
  • Как хранить и работать с деньгами в коде и базе данных?

    @gleb_kudr
    Вот международный стандарт по денежным единицам en.wikipedia.org/wiki/ISO_4217
    Там видно, что число знаков после запятой у них может быть разное. А значит для простоты разработки, все стоит хранить в минимальной дробной денежной единице валюты, осущеставляя конвертацию при выводе (т.е. в int)
    Ответ написан
    Комментировать
  • Посоветуйте мобильный ноутбук для программирования

    Почти каждый день таскаю с собой 15-дюймовый Asus K52 — абсолютно не мешает, когда в рюкзаке. В сумке через плечо немного неудобно.

    У нетбуков мало того, что экран маленький, так еще и клавиатуры не самые удобные.
    Ответ написан
    Комментировать
  • Какой бесплатный антивирус поставить дома, простому пользователю?

    @bimcom
    Ну и не забываем правило:
    Из под Админа не сидим, на Админскую учетку пароль.
    Ответ написан
    Комментировать
  • Какой бесплатный антивирус поставить дома, простому пользователю?

    Wott
    @Wott
    Microsoft Security Essential
    На удивление сбалансированный оказался
    Ответ написан
    7 комментариев
  • Как расположить элементы списка в строку по два пункта?

    @Ano
    <style>
        li { float: left; margin: 1em; }
        li:nth-child(2n+1) { clear: both; }
    </style>
    <ul>
        <li> 1
        <li> 2
        <li> 3
        <li> 4
        <li> 5
        <li> 6
    </ul>
    Ответ написан
    3 комментария
  • Книги для С++ embedded

    По опыту могу сказать, что там не такие большие отличия от оригинального С++(в основном убраны все тяжелые операции, вроде try\catch блоков), и о тех отличиях которые есть, лучше всего читать документацию именно к используемому компилятору. Какая железка?
    Ответ написан
    1 комментарий
  • Оценка уровня программиста?

    sainnr
    @sainnr
    Позвольте и мне высказать свою точку зрения. Как правильно отметили выше, объективно оценить знания программиста по числовой шкале (хоть по 100..0-бальной), пожалуй, невозможно. Да и наверное не нужно, так как в каждой компании требуют различные знания (кто еще кроме компаний будет вас оценивать?).

    Тем не менее, можно выделить несколько категорий знаний, по которым можно составить более-менее объективную картину программиста. Например, сюда можно отнести:
    — владение различными ЯП;
    — опыт работы с каждым из них;
    — работа в команде;
    — участие в OpenSource-проектах;
    — наличие собственных разработок;
    — знание паттернов;
    — знание алгоритмов, структур данных;
    — знание методологий разработки;
    — знакомство с системами контроля версий, тестирования;
    — и т.д.

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

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

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

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

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

    По поводу собеседований. Ходить на них — весело, если выбрать верный настрой. Представьте себе, что вы вообще не хотите попасть в эту компанию, а пришли лишь показать все, что вы умеете, «какой вы из себя хороший специалист». Конечно, не стоит выпячивать свое ЧСВ при собеседовании — ведите себя естественно; в тоже время, убиваться в случае неудачи не стоит — вы же совсем и не хотели к ним идти работать.

    А чтобы было о чем рассказать, в свободное время (оно же у вас есть?) разрабатывайте «для себя» разные программки. Ну например, напишите какой-нибудь парсер, поработайте с API различных систем (того же Яндекса), сделайте собственный таск-менеджер, придумайте сами интересную вам небольшую идею и доведите ее до конца. В каждой такой задаче можно найти много тонких моментов — оптимизация скорости алгоритма, структуры БД, применение паттернов, взаимодействие компонент, написанных на разных ЯП и т.д.

    Многовато текста получилось…
    Ответ написан
    3 комментария
  • Преподавание С в университете. Нужен совет?

    @vadiml
    Одна из причин популярности С — книга K&R, она очень хорошо написана и база языка из неё подходит и сейчас.
    Ответ написан
    1 комментарий
  • С++ какой вид памяти использовать лучше и главное почему?

    hybridcattt
    @hybridcattt
    Отличие в применимости. Статически вы заранее определяете количество элементов. То есть в си Вы не можете написать char string[n]. Если заранее неизвестно кол-во выделяемой памяти, то ее приходится выделять динамически. С экземплярами классов то же самое.
    Отличие при использовании в классе — ну Вы сами написали — в таком случае ее надо выделять в конструкторе и освобождать в дестректоре. Подводный камень — тогда надо писать свой конструктор копирования. Ибо дефолтный копирует все в лоб, в результате Вы получите 2 объекта, у которых Ваше поле ссылается на одну и ту же память. При уничтожении этих объектов получите ошибку (нельзя освободить одну область памяти дважды).
    По поводу malloc/realloc — если старые данные уже не нужны, то лучше использовать realloc, а не free+malloc, так как память быстро фрагментируется и в скором времени приложение не сможет выделить нужный объем (malloc выделяет непрерывный блок памяти)
    Ответ написан
    9 комментариев
  • Что должен знать Senior C++ Developer?

    @tangro
    Опыт нужен. Хотя бы лет 5. В общем, сеньйор даже не столько должен хорошо уметь писать код, сколько видеть риски и принимать решения, которые точно не повредят проекту. Я думаю, С++ программера можно считать сеньйором, когда он способен принимать решения типа:
    1. Выбор IDE, компилятора, версии языка.
    2. Написать с нуля или взять готовое.
    3. Юзать STL\Boost\MFC\ATL\Qt или нет. Если да — что лучше в данном случае и почему.
    4. Стоит отрефакторить код или нет.
    5. Написать самому\отдать Juniory
    и т.д.

    Ах да, еще важный признак «сеньйорства» — осознание того факта, что для программиста на С++ не должно быть невозможных вещей. Какой-нибудь там Java или .NET программер может сказать что-то типа «это ограничения платформы.», «программа тут не может кушать меньше вот такого количества памяти», «это перехватить нельзя — код в недрах ОС\платформы». C++ сеньйор должен быть способен докопаться, разобрать и отладить всё — вплоть до системных библиотек, драйверов и BIOSа.
    Ответ написан
    3 комментария
  • Что должен знать Senior C++ Developer?

    afiskon
    @afiskon
    Советую найти работу — удаленную или на пол ставки. Студентов, готовых работать за 10-20к разбирают, как горячие пирожки. В связи с этим можешь сразу пойти на собеседование в 3-5 мест и найти наиболее интересное/удобное для тебя. Опыт и особые знания не нужны, главное — мозги.

    Только (очень важно!) советую сразу искать место, где будет интересно работать после получения диплома. А также, где имеет место командная работа (в смысле — настоящая, с документацией, svn и тп) и желательно — иногда говорят на английском. Если к этому всему прибавить высоконагруженные проекты — вообще супер. К окончанию института уже будешь иметь и знания и продакшн-опыт.

    Как программист C++, ты обязан хорошо разбираться в STL и Boost, отладочных средствах и API под платформу, под которую пишешь (UNIX/Windows), а также десятке кроссплатформеных библиотеках (Crypto++, cURLpp, Qt, wxWidgets, ...). Знание ассемблера не повредит. Ну и изучай процессы разработки, правила написания читабельного и легкого в сопровождении кода, UML, сети и тп.
    Ответ написан
    3 комментария
  • Что должен знать Senior C++ Developer?

    Akson87
    @Akson87
    Senior = опыт, так что надо думать пока о Junior.
    Возьмитесь сделать какой-нибудь проект, по возможности сложный. По ходу дела Вы поймете, что надо знать, чтобы его реализовать. Путей на самом деле много, можно стать универсальным человеком, можно углубиться в какую-то конкретную область. Сначала надо ответить на вопрос, что Вы хотите делать? Приложения для пользователей, серверное, драйвера, 3д, бд, CAD, аудио, итд итп?

    Если хотите, могу предложить реальную задачу, где многое станет ясным. Если вдруг понравится — могу предложить много интересного дальнейшего сотрудничества, если нет — будете знать, что не понравилось:)
    Ответ написан
    2 комментария
  • Что должен знать Senior C++ Developer?

    igofed
    @igofed
    Странный вопрос для студента, как стать сразу синьором.
    А вот по поводу джуниора — могу немного рассказать, ибо год назад искал работу именно на такую вакансию, но на C#.
    Определись, что именно ты хочешь писать на C++ (сетевое программирование, системное и т.д.), определившись пиши что-нибудь из области, поучавствуй в стартапе. Получишь опыт продакшина, что позволит тебе на собеседовании разговаривать не о том, чему тебя учили, а о том что ты действитено делал. Реальные проекты дадут опыта кода и опыта работы в команде.
    В общем вывод один — нада писать код )))
    Ответ написан
    2 комментария
  • Что должен знать Senior C++ Developer?

    @square
    Тут скорее про опыт, одних знаний будет мало, прицеливайтесь сначала кодером
    Ответ написан
    2 комментария