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

    FanKiLL
    @FanKiLL
    Если вам понравился ASP.NET MVC то вам понравится и Ruby on Rails ибо ASP.NET MVC много фич слизали с рельсов, миграции, структуру, хелпер методы в шаблонах Razor - вообщем очень похоже.
    И это не скрывали сами разработчики, что ориентировались на рельсы. Вроде Scott Guthrie или Scott Hanselman об этом рассказывали в одном из скринкастов/докладов.

    Я к сожалению перестал следить за asp.net mvc после версии 3, сейчас там 5 версия наверно много нового и интересного.

    Если у вас уже есть опыт C# и вы можете писать на ASP.NET MVC, зачем куда то уходить?
    У вас там куча классных фич в ASP.NET MVC. ASP.NET WEB API например, чудесный linq, очень сильный Entity Framework.

    Единственный минус всего этого проприетарность Microsoft, но stackoverflow.com как то живёт с этим и довольно успешно.

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

    В веб всё уныло, формочка, занёс в базу, вывел с базы в другом месте.
    Ответ написан
    2 комментария
  • В чем отличия C++ и C# ?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Тут все пишут про отличия. Рискну написать про сходства.

    Во-первых, о чём бы ни писала Елена и Си++ и C# - оба языки общего назначения. Даже больше, оказывается - C# ни разу не заточён под объёмную библиотеку (или фреймворк) .NET, однако с ним намного, много проще. Но если таки учитывать .NET, то для Си++ есть Boost и Qt, так что здесь скорее паритет - библиотек для обоих хватает.
    Во-вторых, сложность разработки на Си++ часто преувеличена. Разве только дисциплины надо поболее - выстрелить в ногу здесь попроще. Однако при этом Си++ будет чутка более гибкий и без танцев с бубнами unmanaged код не запустить на C#. Если внезапно потребуется.
    В-третьих, оба языка, раз они общего назначения, таки мультипарадигмальные. То есть они реализуют большинство практик. И хотя Си++ развивается довольно медленно, сейчас Си++ резко догнал C# в плане нереализованных фич (здесь как минимум лямбды). Ну и метапрограммирования у Си++ поболее будет (наглая ложь).
    В-четвёртых, оба языка кроссплатформеные. Впрочем, C# будет более кроссплатформенный, чем Си++. Разве только тот же Qt резко стёр границы, но это не значит почти ничего - C# компилируется в тот же самый CIL для всех платформ, Си++ - в совершенно разный код для разных платформ (i386, amd64, ARM Cortex-AXX).
    Наконец, в пятых, синтаксис у них действительно очень похож. Оба языка принадлежат к семейству Алгол-подобных, так что и брейсы, и остальные скобки здесь имеют примерно одно предназначение.

    Различия, которые казалось бы делают языки совершенно разными, таки не столь принципиальны на том уровне абстракции, на котором был задан вопрос. А различия действительно колоссальны: C# - managed код, что означает, что скомпилированный код будет исполнятся не на прямую в CPU, а на специальной виртуальной машине. Это съедает производительность, но сильно облегчает перенос кода. Ну и потом, C# - полупроприетарный ответ Java (что интересно, так как получается, что C# - более свободный, чем Java), которая была создана как замена сложному и небезопасному C++ в том числе.

    В общем, как человек, который начал давно с C#, продолжив C++ и по пути изучив Python, Java, D и другую ООП-чушь могу с уверенностью сказать, что разницы в общем-то и нет... То есть придётся немного проникнуться в чуть другую философию и выяснить, какие проблемы более новый язык пытался решить. Но если подходить к этому, как подошёл lookid, то это скорее не как изучать языки одной языковой группы, а как изучать один и тот же язык в разное время или в разных сферах.

    Почему так? Потому что ООП... Оно как бы ООП, ничего сверхъестесственного ни один язык не предлагает, это не Haskell, и тем более не Brainfuck. Так что принципиально общие вещи в них будут. То подмножество, что реализует машину Тьюринга - у них общие. Сами посмотрите: циклы, ветвления, передача аргументов, арифметика... С небольшими правками всё совершенно одинаковое. Да, Дмитрий совершенно прав, traits на C# не повторишь, ибо та аналогия будет уже не traits, однако... Это уже [programming_language] related, то есть это попытка совладать с особенностями.

    Немного пруфов: лично я ходящий пруф. Зная C++ и C# и немного Java я просто начал программировать на Python. При том, что Python даже алголоподобным не принадлежит. А всё потому, что логика одна и та же, хотя различий между Python и C(++|#) намного, много больше. Но не читая почти никаких туториалов, пройдясь галопом по европам с документацией сейчас я знаю python достаточно для серьёзного проекта.

    UPD. По поводу метапрограммирования... Таки рантайм рефлекшн шарпа тащит. И хотя ни макросов, ни шаблонов, ничего. Но изменять код на лету - это уже очень круто. По дефолту плюсы так не умеют, и хотя шаблоны с макросами тащат, сильно, очень сильно тащат и вытаскивают его, Си++, со дна, надо признать - рефлешн у шарпа будет поинтереснее. Извиняюсь за дезу.
    Ответ написан
    6 комментариев
  • Как быть дальше с обучением веб-разработке?

    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 или я запутался и вам наоборот надо?
    Ответ написан
    Комментировать