• Собеседование на должность javascript-разработчика (senior). Как пройти и какие вопросы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Выбираете место куда не особо хотите идти, идете на собес, не проходите, понимаете в чем ваши проблемы. Знать надо пожалуй javascript сам по себе, работу событий в DOM, HTTP (в том числе кросдоменные запросы) и т.д. и т.п. Далее от уровня на который претендуете. Может быть от вас вообще только jQuery потребуется знать. А может angularjs+backbone+knockout+кучи других штук и gulp/grunt, jasmine и прочие приблуды для покрытия кода тестами...
    Ответ написан
    Комментировать
  • Язык программирования под конкретную задачу + с нуля + хорошая база?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    На самом деле, можно выбрать JS или Python. В контексте Python'а поставленная первая задача решается на раз два, вот пару советов, которые могут помочь в дальнейшем (естественно, в контексте получения быстрого результата):
    + забейте на классы и красивый код, пишите как можно быстрее, итоговый вариант будет мерзким и ужасным, однако результат не заставит себя ждать
    + используйте мощь Python'а - генераторы, списки (и слайсы), лямбды и много-много сахара
    + начните с pygame: тут не будет красивых менюшек из коробки, однако, что важнее, будет достаточно удобный с точки зрения Python API, и рисование и звук.

    К слову, Python можно относительно легко компилировать в JS, а есть ещё и on-the-fly парсер на JS. Так что сделать web-версию не составит огромного труда.

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

    Единственная сложность, так это выбрать двойку или тройку. Советую тройку - с либами в основном всё хорошо, да и разница не настолько колоссальна (в основном это print стал настоящей функцией, когда был невесть чем). Да и забавно - python 2.x очень легко конвертируется в python 3.x подключением пары либ и парой импортов из __future__.

    Теперь о том, как это можно экстраполировать на остальные задачи. Матан совсем не обязательно и легко поднимается по требованию. Было бы не плохо быстро поднять технический английский (дабы понимать термины), хотя здесь проблем совсем не должно быть - сам технический IT-русский на 80% из английского. Программировать контроллеры на Python сложно, но можно. Понимать вэб и 1С-программистов не составит труда, так как в основном они и не программисты.

    Относительно JS могу сказать, что он и простой и сложный одновременно. Задумывался он максимально простым, и отчасти он таким получился. Однако уродцем он получился ещё тем. В этом видео очень интересно показано. И там ещё много таких тонких моментов. Хотя на самом деле, он действительно очень интересен и многое умеет. Да и разработка идёт полным ходом, а браузеры спешно имплементируют новшества.
    Ответ написан
    4 комментария
  • Как организовать своими силами continuous integration для проекта на Codeigniter?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Я в своё время потратил примерно 2 суток в попытках настроить jenkins.
    Не получилось, плюнул, за пол дня написал собственное простенькое решение по деплою.

    Вообще есть PHPCI https://www.phptesting.org/ , у них есть какое то saas решение (не очень понимаю как это реализовывается), но вживую не щупал.
    Ответ написан
    Комментировать
  • Какой язык учить первым, если ориентируюсь на веб?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вы спрашиваете или Вы советуете?

    Это зависит от того кем Вы хотите работать.
    Хотите заниматься фронтендом - учите javascript и верстку.
    Хотите заниматься backend в веб студиях / стартапах - php/ruby/python/node.js + sql + nosql
    На php работу найти быстро и просто, на всем остальном как повезет
    Хотите делать веб в enterprise компаниях - java
    Ответ написан
    Комментировать
  • Общие вопросы по Flask?

    zasqer
    @zasqer
    4) по поводу батареек:
    Flask-Login - аналог Django'вской модели User'a.
    Flask-SQLAlchemy - аналог Django ORM, только круче, хотя подключать немножечко сложнее.
    Flask-WTF - аналог Django Forms, не берусь сказать, что лучше.
    Flask-Script - аналог Django manage.py, который нужно допиливать самому, но мне нравится.
    Flask-Admin - аналог админки Django, очень простенький. Тут Django на голову выше.
    Flask-Restless - для создания REST API, аналогом у Django не пользовался, не могу сравнить.
    Flask-DebugToolbar - аналог дебаг панели Django, но попроще.

    Кроме того Armin Ronacher делает https://github.com/pocoo/metaflask , проект, который должен немного навести порядок в екосистеме Flask. Пока ещё в разработке.

    Если кто знает и пользовал путёвые расширения для тестирования и интеграции с соц-сетями - напишите плиз здесь в коментах.
    Ответ написан
    Комментировать
  • Есть ли какие-то требования к паролю по закону о персональных данных?

    В соответствии с требованиями ст.19 ФЗ "О персональных данных" Правительство выпустило Постановление №1119, в котором в зависимости от объема обрабатываемых данных определяется требуемый уровень защиты (цифра от 1 до 4).

    ФСТЭК РФ в соответствии с ФЗ и ПП-1119 выпустило 2 приказа : для гос.учреждений - Приказ №17, для коммерческих учреждений - Приказ №21, в которых указывается какие меры защиты должны быть внедрены, и если это принципиально, то их характеристики. Парольная защита указана для всех 4 уровней защищенности, однако, параметры этой парольной защиты не указаны. Таким образом по факту они могут быть выбраны Вами любыми, если Вы в случае проверки докажете невозможности их взлома полным перебором за время его (пароля) жизни (иначе это будет противоречить тому же Приказу №21).

    Дальше Вы должны отталкиваться от скорости перебора и вычислять по ней требуемую информационную емкость (энтропию) пароля. Явных требований к набору символов энтропия не задает, но увеличивая наборы, Вы фактически позволяете сделать пароль короче (при той же информационной емкости). И очень советую внедрять в системе таймаут (например, 2 минуты) после 5-10 неверных попыток подбора пароля. Иначе требуемая минимальтная длина у Вас выйдет просто нереальная для запоминания рядовому пользователю.
    Ответ написан
    Комментировать
  • Что почитать о том, как создать многопользовательскую программу WPF C#?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Поделюсь прямо готовым примером

    1) Надо как то хранить в БД права пользователя
    Вводим понятие "роль" - это некое тривиальное право доступа к конкретному разделу (например user_view, user_edit, user_delete).
    CREATE TABLE `role` (
     `role_title` varchar(255) NOT NULL COMMENT 'Роль',
     `role_title_description` text NOT NULL COMMENT 'Описание роли',
     PRIMARY KEY (`role_title`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Роли пользователей';

    Роли объединяются в группы (администраторы, модераторы, итд)
    CREATE TABLE `group` ( 
     `group_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID группы', 
     `name` text NOT NULL COMMENT 'Имя группы',  
      PRIMARY KEY (`group_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Группы пользователей';
    
    CREATE TABLE `xref_group_role` (  
    `group_id` int(11) NOT NULL,  
    `role_title` varchar(255) NOT NULL,  
    PRIMARY KEY (`group_id`,`role_title`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Связь групп и ролей';

    Ну и пользователи привязаны к группам
    CREATE TABLE `xref_user_group` (  
    `user_id` int(11) NOT NULL,  
    `group_id` int(11) NOT NULL,  
    PRIMARY KEY (`group_id`,`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Связь пользователей и групп'


    2) Когда пользователь авторизуется - получаем список его ролей
    SELECT 
    	distinct `role`.`role_title`
    FROM 
    	`xref_user_group`
    JOIN `xref_group_role`
    	ON `xref_user_group`.`group_id` = `xref_group_role`.`group_id`
    JOIN `role`
    	ON `xref_group_role`.`role_title` = `role`.`role_title`
    WHERE
    	`xref_user_group`.`user_id` = 123


    3) В рамках данного примера подразумевается что все роли исключительно "разрешительные". Если у пользователя есть роль - он может совершать соответствующее действие. Нет - не может.
    Соответственно в логике приложения, когда пользователь пытается совершить какое то действие - просто проверяем наличие у него роли.

    Фуф)

    UPD
    Спасибо, большое!
    Только не совсем понятно как это должно взаимодействовать например с меню. Например есть меню Правка -> Добавить, Изменить, Удалить. Если у пользователя есть права на добавление и изменение но нет на удаление, как сделать что бы пункт меню "Удалить" был не активен?

    Я под десктоп последний раз кодил лет 12 назад на Visual Basic (еще не .net) , но тем не менее:
    У вас должен быть код который создает это меню. В этот код вставляем все проверки ролей.
    Если кода меню нет (вы собрали меню через конструктор), то нужно написать код который выполняется скажем при загрузке формы, смотрит на роли текущего пользователя и соответственно включает/выключает пункты меню.
    Ответ написан
    Комментировать
  • Какие учебные пособия выбрать для систематизированного изучения программирования на основе ЯП Python?

    sim3x
    @sim3x
    Ах да, самый продуктивный совет - найди наставника
    __________________________________________________________

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

    1) понять как работает компьютер изнутри на основе ОС линукс;
    2-4) основные понятия, изучить алгоритмы и алгоритмизац...;
    5) чтобы изучить программирования на основе Python достаточно на нем писать;
    6) чтобы получить большое количество ПРАКТИКИ - писать и писать.
    Ответ написан
    9 комментариев
  • На повестку дня: Ruby On Rails или Node.js или php или Python?

    webus
    @webus
    Golang | Python | NodeJS | Java
    Python / Django.

    Мода на Ruby / Rails прошла. Владельцу проекта нужна предсказуемость и прозрачность работы фреймворка, на котором построен его проект. Этого достаточно сложно добиться с "магией" Ruby, которую понять то сложно, если пришел с других языков. Это первое.

    Второе, как ни крути но Ruby медленный. Да я пробовал последний Ruby 2.1 с последними Рельсами, и говорю он медленный. Да я знаю, что можно запускать Рельсу на всяких passanger, thin и unicorn. Знаю что есть JRuby и прочие реализации. Знаю что можно закешировать все что можно. Я это пробовал. И все равно, Руби - медленный. К слову реализаций Python тоже много, есть и Jython, PyPy, Stackless Python. Django на фоне Rails выглядит просто молнией, быстрый старт и прозрачность работы. Нет никакой магии, все понятно как работает от начала и до конца.

    Третье, Django достаточно консервативный фреймворк. В него никогда не добавят какую-нибудь сомнительную фичу, как это бывает в Rails (например никому не нужный turbolinks). Скоро выходит версия 1.7. Где достаточно много плюшек действительно нужных.

    Вам будут говорить про разветвление Python на версию 2 и 3. Что все плохо. Не верьте. Это все ерунда. В настоящее время большинство популярных библиотек уже давно на Python 3. Django, Flask уже давно. Мы все новые проекты начинаем на Python 3 и проблем никаких нет.

    На счет NodeJS. Использовать можно, но... Неудобно. Переносимость кода client side < - > server side по факту равна менее 10%. Сейчас большинство используют NodeJS как платформу для запуска нужных тулз для сборки фронтэнда, например Grunt / Gulp, Bower и прочее. Конечно пакетный менеджер npm.

    Надеюсь ответил на ваш вопрос.
    Ответ написан
    4 комментария
  • На повестку дня: Ruby On Rails или Node.js или php или Python?

    Если вы уже пишите FrontEnd, зачем изменять уже известным вам веб-технологиям?
    Если вы верстаете, знакомы с JS и JQuery, препроцессорами, то не разумнее ли развиваться дальше в этом же направлении? Или вы стали гуру, таким же как Paul Irish?
    Берите NodeJS и серверный JS, на западе это самые трендовые технологии на сегодняшний день, за год как раз расширите свои знания и сможете устроиться на стажировки, поработать в боевом режиме.
    Это мой взгляд на вещи, но как говорится решать вам...
    Ответ написан
    2 комментария
  • Yii или CodeIgniter?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    Codeigniter имеет низкий порог вхождения и соответственно подходит для начинающих программистов. Использую его 3 года в качестве платформы для своей CMS, проблем нет, легко расширяем. Многие CMS его используют например такие cogear.ru и www.imagecms.net
    Есть свои бандлы getsparks.org
    Единственный минус что в последнее время развивается очень медленно.
    Ответ написан
    Комментировать
  • Как в Codeigniter передать get параметры в route?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вы явно не понимаете что такое GET и как работает route
    stackoverflow.com/questions/334708/get-parameters-...
    Но вообще так лучше не делать.
    Можно же объявляя фунцию сказать
    function product($id= 0){
    и codeigniter автоматически подставит аргумент после слеша туда.
    Ну или если руками настраивать code-igniter.ru/user_guide/general/routing.html

    PS или я запутался и вам наоборот надо?
    Ответ написан
    Комментировать
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

    Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!

    Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
    Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.

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

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий
  • Что не так в моем коде, и как подтянуть навыки?

    @onepavel
    Консультация и разработка мобильных приложений
    Тебе все правильно написали.
    Мой тебе совет лезть в гитхаб, качать оттуда проекты и смотреть их механику.
    Прежде чем лабать код смотрим на исходные данные.
    У тебя это json, открываем и смотрим.
    Мы видим массив одинаковых объектов. Для нашего удобства
    сообразим класс под json'овские данные
    class Product {
    int id;
    String name;
    String picture;
    String description;
    }

    Теперь нам нужно в активити их распарсить в список.
    У тебя есть объект с методом
    new JSONReadFromAsset().readJsonFromAsset(getApplicationContext());

    который возвращает json массив, а если заказчик завтра даст два таких файла !?
    мы же не хотим копипастить, а сделаем универсально и метод парсера будет возвращать сразу массив объектов, а не json данные и тогда мы выкинем лишние сущности
    ArrayList<String> nameList = new ArrayList<String>();
    ArrayList<Integer> idList = new ArrayList<Integer>();

    а вставим только один список
    List<Product> mDataList
    и тогда мы будем получать данные
    mDataList = JSONReadFromAsset.readJsonFromAsset(getApplicationContext(),"questions.json");

    Сделаем readJsonFromAsset статиком, так как JSONReadFromAsset ничего в себе не несет.
    в readJsonFromAsset должно быть что-то, вроде, такого
    readJsonFromAsset() {
    List<Product> dataList = new LinkedList();
    for () {
    Product product = new Product();
    obj = jsonArray.getJSONObject(position);
    product.id = obj.getInt("id");
    product.name = obj.getString("name");
    product.description = obj.getString("description");
    product.picture = obj.getString("picture");
    dataList.add(product);
    }
    return dataList; 
    }

    вместо методов getString, getInt я предпочитаю использовать optString, optInt
    Вариантов парсинга данных много, можно изворачиваться по разному.
    А что бы показать что ты крут, можно сделать класс Product Parcelable
    и не передавать пачку строк через бандл в интенте, а передать сразу Product объект.
    bundle.putParcelable(SomeActivity.PRODUCT, mDataList.get(position));

    В другом активити принять и с ним работать.

    Можно вот так сделать
    public static final String LINK = "ironwaterstudio.com";
    и поместить в легко доступное место или завести отдельный класс
    class Static {
    public static final String LINK =  "http://ironwaterstudio.com";
    }

    AlertDialog - насколько тебе необходимо обрабатывать setNegativeButton, попробуй не передавать обработчик кнопки, а сунуть null
    Ответ написан
    3 комментария
  • Как создать мобильное приложение Android для интернет сайта?

    @cloud-habr
    хорошее Api сайта на пример вконтакта описание
    т.е другими словами это то что ответит сайт на get запрос типа yousite.com?userid=1&token=jrhbmgjhgbbnmmhkik5l&im=all - вывод всех сообщений
    план проекта прост чего нельзя сказать о реализации
    1. создаёте сайт с чатом и апи
    2. в Activity приложения делайте запрос
    3. в Activity обрабатываете ответ

    вся основная работа уйдет на безопасность сайта и приложения , к примеру на авторизация пользователя ...
    Ответ написан
    1 комментарий
  • Как создать мобильное приложение Android для интернет сайта?

    aratj
    @aratj
    программер.
    1. почитать про асинхронную работу с сетями..
    2. узнать как работать с post/get запросами
    3. научится работать с парсерами, особенно если нет API придется парсить html
    их много, но я люблю jsoup из-за возможности работать с селекторами. по аналогии с jquery (javaScript) можешь гуглить.
    4. почитать про json/xml (если есть API , чаще используют json)

    5. Научится работать нормально со списками. List, ListArray итд.
    6. Научится работать с кастомными адаптерами.
    Ответ написан
    1 комментарий
  • Каков план личностного развития JavaScript программиста с нуля?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1. Выучить русский язык. Узнать, что такое "личностное развитие" и чем оно отличается от профессионального.
    Ответ написан
    2 комментария
  • Под что легче программировать: под IOS или под Android?

    Collosteam
    @Collosteam
    Android кодирую
    Все зависит от того какой язык програмирования вам ближе.
    Objective-C очень хороший язык, после Java, конечно, было неожиданностью увидеть его синтаксис, но как оказалося, все очень просто и интуитивно. За пару месяце можно освоить, до уровня написания кода без книжки. Под Android, на моих курсах менеджеры, через полтора месяца пишут клиент к своему блогу.
    Что касается разработки под Android и iOS, то впринципе уровень сложности примерно одинаковый, благодаря xCode разработка под iOS весьма увлекательное занятие, для Android прийдется поплясать с Studio.
    Единственный минус iOS необходимость на этапе обучения Мака, что не всегда по карману.
    Ответ написан
    Комментировать
  • Возможна ли разработка android приложений на Mac OS?

    risik
    @risik
    Программист
    Под Андроид можно разрабатывать на чем угодно. OS X для этого вполне подходит.

    Сам сижу на OS X но у меня мало разработки под Андроид. В основном iOS.
    Потенциальные подводные камни:
    - имейте в виду, что OS X это BSD, а не GNU. Если в процессе сборки используете bash/sed/awk могут быть отличия.
    - если активно используете эмулятор, на OS X не забудьте установить HAXM иначе эмулятор Вас неприятно удивит тормознутостью по сравнению с KVM based на linux.

    Note: Eclipse не рекомендую. Лучше IntelliJ IDEA / Android Studio

    update: погуглите про установку Java на OS X. ее там изначально нет.
    Ответ написан
    1 комментарий
  • Что будет, если воровать контент с сайтов в массовом количестве?

    Trow_eu
    @Trow_eu
    Вы будете плохо спать, нервно оглядываться, наберете вес от стресса и тп.
    Посмотрите на депутатов, они богатеют на воровстве, но выглядят жалко.
    Совесть еще можно забить, но с кармой не договоришься.
    Ответ написан
    Комментировать