Задать вопрос
  • Как быть дальше с обучением веб-разработке?

    Freika
    @Freika
    Senior Ruby on Rails developer
    За 7 месяцев практически с нуля выучил достаточно, чтобы взяли джуниором в одну из самых крутых rails-компаний в России. Максимум - год на это дело, одним словом. Чтобы попробовать языки и решить, какой больше нравится, почитайте об инфраструктуре php, js, ruby и python, о комьюнити каждого из них, пройдите хотя бы по половине курса для каждого языка на codecademy.com. Впечатление сложится о каждом языке. Обратите внимание, как у них с подключением библиотек, опенсорсом, за какой язык больше платят и на каком больше вакансий(если что, это пхп, но платят за него меньше всех). Выпишите в столбик результаты и найдите среднее арифметическое изо всех этих пунктов, которое в достаточной мере удовлетворит ваши ожидания. Затем принимайтесь за активное изучение. Начните писать что-то, что решает вашу задачу, начиная с каталога ваших книг с учетом прочитанных и перечитанных и заканчивая собственной системой учета финансов.
    Ответ написан
    7 комментариев
  • Есть ли какие-то требования к паролю по закону о персональных данных?

    Не смотря на то что в самом законе 152-ФЗ об этом и правда нет таких требований, сам закон существует не один, и как уже написал @OLS, есть Приказы №21 (для защиты ПДн) и №17 (для ГИС), где указываются общие меры защиты защиты без конкретики.
    В феврале 2014 ФСТЭК выпустил методичку "Меры защиты информации в государственных информационных системах" fstec.ru/tekhnicheskaya-zashchita-informatsii/doku... , где расписывает как он видит выполнение каждой из мер. (Т.к. меры в 21 и 17 приказе практически идентичны, то данную методичку можно использовать и для защиты ПДн)
    Таким образом для минимального четвертого уровня защищенности ПДн, "в случае использования в ИС механизмов аутентификации на основе пароля (иной последовательности символов, используемой для аутентификации) или применения пароля в качестве одного из факторов многофакторной аутентификации, его характеристики должны быть следующими:
    • длина пароля не менее 6 символов
    • алфавит пароля не менее 30 символов
    • максимальное количество неуспешных попыток аутентификации (ввода неправильного пароля) до блокировки от 3 до 10 попыток
    • блокировка программно-технического средства или учетной записи пользователя в случае достижения установленного максимального количества неуспешных попыток аутентификации от 3 до 15 минут
    • смена паролей не более чем через 180 дней"(с)
    Ответ написан
    1 комментарий
  • В чем отличия C++ и C# ?

    Nidora
    @Nidora
    Бонус 200 руб всем новым клиентам! VDS - 149 руб
    C# — объектно-ориентированный язык программирования с автоматическим управлением памятью, предназначенный для программирования на платформе .NET.

    C++ — кросс-платформенный язык программирования общего назначения, совместимый в большинстве случаев с C.

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

    Советую начать с C# на примерах.
    Ответ написан
    Комментировать
  • В каком случае мобильное приложение будет работать приложение быстрее. Быстрее подгрудаться товары в приложение?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    из базы данных с сервера (REST API) + кеш на девайсе + инвалидация кэша. Заодно прокачаетесь.
    Ответ написан
    1 комментарий
  • Собеседование на должность 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?

    Vyatka
    @Vyatka
    web-разработчик
    Если вы уже пишите 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 комментария