• Бесплатный хостинг для проекта на nodejs + mongodb?

    rino906
    @rino906
    Openshift от Redhat хороший вариант ( https://www.openshift.com/pricing/index.html ), также можете разместить на Amazon aws(вроде год после регистрации бесплатно)
    Ответ написан
    3 комментария
  • Можно ли сделать SMS отправку?

    kawabanga
    @kawabanga
    sms.ru
    уведомления на свой номер бесплатны.
    Пользуйтесь.
    Ответ написан
    4 комментария
  • Можно ли сделать SMS отправку?

    sanchezzzhak
    @sanchezzzhak
    Ля ля ля...
    заказчик понимает что это будет стоит бабло?

    Сервисы с смс рассылками не бесплатные.
    Из всех которыми пользовался понравился ByteHand
    Ответ написан
    Комментировать
  • Есть ли смысл изучать WPF?

    WPF используется для UWP, знания не пропадут. Плюс недавно MS купили Xamarin, думаю скоро количество поддерживаемых платформ для UWP может резко возрости.
    Ответ написан
    Комментировать
  • В чем смысл создавать ИИ, который будет само обучаться, если быстрее и дешевле его сразу научить?

    @loxenehej
    Дешевле и проще научить решать задачи которые до него еще никто не решал?
    Как так дешевле и проще?
    Дешевле и проще показать как решаются задачи - а дальше он сам.
    Приведи аналогию с человеком - ты хочешь, чтобы на тебя работали только те, кому нужно идеально разжевывать все задачи и которые при небольшом отклонении от задачи впадают в ступор или все таки ты хотел бы чтобы работающие на тебя были хоть немного но самостоятельны в принятии решений, чтобы ты не тратил на них 200% своего времени, будучи над ними нянькой постоянной?
    Ответ написан
    7 комментариев
  • Так что должен уметь делать ИИ, что бы его точно уже утвердили как реальный ИИ?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ИИ - это не аналог мышлению и поведению человека, а всего лишь область математики (теории алгоритмов и смежных), где нельзя получить выводы/результаты, опираясь лишь на одни детерменированные (четко обозначенные) алгоритмы. Та же песня с "нейронными сетями". От нейронов - одно название, а так - конечные автоматы.

    Людям, далеким от математики и статистики результаты кажутся чудесными (ну, иногда они такие и есть), но все они - следствие из должным образом обработанного массива известных данных.

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

    1) Deep Blue - после шумихи, где неофициально или официально компу помогал гроссмейстер комп разобрали и он теперь "на выставке", что мешало-то оставить в игре?
    Уж в шахматах - то при всем многообразии комбинаций, все равно все зарегулировано. Но современные мощности не позволяют обсчитать "все-все", на это по-прежнему нужны десятки лет, потому для выбора верного решения компу и нужен "интеллект",а его нет.

    2) задача релеватности - уж сколько у Гугла ресурсов, а качество сайтов по-прежнему проверяет отряд индусов. И никто, кроме человека, не знает, что он хочет видеть по "ключ" или "пелотка блин шапка военная".

    да и если касались Machine Learning, все вот эти "переобучение - недообучение"- это всего лишь мера участия человека в принятии решения "оно или не оно", сам комп при всех алгоритмах сделать этого не может по определению
    Ответ написан
    Комментировать
  • Как защитить изображения от PrintScreen?

    @Sratimon
    Все что ты видишь в браузере уже лежит у тебя на компе остается только это достать ! Достаешь из js 2 картинки и соединяешь их в фотошопе. или Делаешь расширение оно у тебя из js забирает переменные с 2 снимками и делает из них одну картинку =).
    А так делай привью (маленькое изображение плохого качества и выкладывай его ) как это сднлано на платных фотостоках .
    Как вариант попробуй сделать так при нажатии клавиши принскрин закрывай картинку черным дивом на 1 с или меньше мб поможет . А то лишний раз нагружать клиент это не круто .

    P.s решений этого много но человек знающий веб все равно получит эту картинку если он ее видит . Есть сайт с шрифтами там шрифты стоят от 1$ до $150 мб больше . Их можно вытащить через F12 бесплатно =). Это так для примера !
    ------------------------------------------------------
    Вот смотрю люди предлагают разные решения но как сказали это ворота по среди поля =) . Знающий человек все ровно достанет это да запрети ему все он достанет ее из оперативы =) . Если данные попали на комп то их уже не защитить !
    Ставьте условия на прин скрин и при нажатие добавляйте к картинке дисплей ноне ! или Делайте привью .
    О стольные решения приведут к нагрузке на машину пользователя и усложнению юзабилити сайта .
    Появилась еще идея при нажатии f12 бить ссылку на картинку =) как варик если кто то захочет отключить js в браузере прямо у вас на сайте =)
    Ответ написан
    11 комментариев
  • Какие требования к Junior разработчику на C#?

    @hellpirat
    Full stack developer (Python/Django, React.js)
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    @kalyabus
    Сначала поймите зачем нужно "проверить" код, потом поймете, "что" проверять. Тем не менее приведу выжимку из критериев, принятых у нас

    1. Код не содержит явных и потенциальных ошибок.
    2. Код работает так, как это описано в документации, техническом задании или сопроводительных комментариях.
    3. Стиль кодирования соответствует принятым правилам кодирования
    4. Код имеет сопроводительные комментарии в соответствии с phpDoc
    5. Вложенность блоков не превышает 4-го уровня.
    6. Код не генерирует сообщения уровня Strict, Warning, Notice, Deprecated. Если этого невозможно избежать, то непосредственно перед строкой, которая это генерирует необходимо принудительно отключить error_reporting, а непосредственно после строки включить error_reporting в исходное значение (которое было до этого). Такой код должен быть задокументирован специальным образом.
    7. Закомментированный кусок кода должен быть удален.
    8. В PHP коде (за исключением phpTemplate) запрещены вставки HTML, JavaScript. Все вставки должны производиться через специальные шаблоны.
    9. Классы, функции, переменные и константы должны логически именоваться человекопонятным способом на английском языке в соответствии со стандартами кодирования. Не допускается именование транслитом на русском, либо на иных языках
    10. Область видимости переменных и методов классов всегда должна быть определена (private, protected, public).
    11. Размер одного метода не должен превышать 40-50 строк.
    12. Переменная, используемая в цикле, либо в условном блоке должна быть инициализирована заранее.
    13. Переменная в любой момент времени должна содержать только один тип. Пустая переменная должна содержать null. (не допускается $var = false; $var = 'test'; . Допускается $var = null; $var = 'test';).
    14. При передаче объектов классов в методы должен использоваться контроль типов.
    15. etc...


    Список далеко не полный. Все зависит от проекта, выполняемой задачи, платформы и компетенции команды. Зачастую просят проверить код перед приемкой на сопровождение. Декларируйте какой-то свой свод правил кодирования и отталкивайтесь от него.

    PHP, к сожалению (а может и к счастью), не строгий язык...
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

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

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

    * Кэш должен очищаться по двум условиям (не по одному из, а именно по двум):
    - Время.
    - Протухание по бизнес логике.
    Разрешается по только времени в безвыходных ситуациях, но тогда время - короткий период.
    - При расчете ключей кэша должна использоваться переменная из конфигурации приложения (на случай обновлений кэш сбрасывается кодом, а не флашем кэш-сервера). В случае использования множества серверов - это очень удобный и гибкий инструмент при диплое.

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

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

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Как сделать такой эффект фона?

    GM2mars
    @GM2mars
    codepen.io/MarcoGuglielmelli/pen/lLCxy
    На слабых тачках в фаерфоксе тормозит. Но можно крутить параметры.
    Ответ написан
    3 комментария
  • Как нужно делать рассылку со своего сайта (сервера)?

    @xtreme
    Снимаю порчу по SSH :)
    1. Изучить рекомендации по рассылкам у крупных почтовых сервисов (Google, Yandex, Mail.ru). При подготовке писем для рассылки строго следовать их рекомендациям.
    2. Зарегистрироваться в postmaster.yandex.ru, postmaster.mail.ru, чтобы следить за ходом рассылки писем.
    3. Отлавливать недоставленные письма, убирать их из листов рассылки, дабы не мусорить.
    4. Сделать механизм отписки от рассылки (это один из критериев пункта 1), причем 100% работающий в один клик.
    5. Мониторить нажатие кнопки "Спам" в вышеуказанных почтовых сервисах, также сразу исключать их из будущих рассылок.

    1к подписчиков - это мелочь. Можешь пробовать отсылать сразу все письма на свой почтовый релей (для 1к хватит и одного релея), даже почти дефолтно настроенный MTA будет рассылать с нужными интервалами.

    Обязательное условие - соблюдать все почтовые правила и не пренебрегать цифровыми подписями - SPF, DKIM, DMARC, правильные записи в DNS (A, MX, PTR).
    Ответ написан
    10 комментариев
  • Где и как следить за новинками и тенденциями разработки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    реддит.
    Ответ написан
    Комментировать
  • Какие шрифты чаще всего используете в дизайне сайта?

    Tash1moto
    @Tash1moto
    Open Sans, Roboto, PT Sans, Droid Sans, Noto Sans, Fira Sans.
    Ну и конечно же Lobster=)
    Ответ написан
    5 комментариев
  • Хорошая задача для укрепления знаний и практики в JavaScript?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Плюсую codewars.com, там интересные задачи на логику, алгоритмы и тонкости языка. Но это всё-таки не продуктовые задачи. Можно их много решать, но так и не научиться делать то, что обычно нужно на работе. Они развивают другое.

    Обычно все пишут туду-приложения, но это уже скучно и затёрто :) Я рекомендую попробовать написать аудиоплеер. Сайт, на котором можно послушать музыку. Можно даже авторизовывать пользователя через last.fm и например рекомендовать ему музыку на основе его предпочтений, или даже сразу включать её (подтягивая треки из вконтакте).
    Ответ написан
    1 комментарий
  • Что должен знать junior С#?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Зайти на сайты IT контор, почитать требования к джуниорам на C#
    Ответ написан
    Комментировать
  • Как эффективно изучать JS?

    @Scribblex
    Я рекомендую изучать JS примерно таким путем:
    – чтение learn.javascript.ru (чтение и, естественно, практика);
    – параллельное прохождение модулей по JS на codeschool;
    – держите перед глазами актуальные вопросы для собеседования JS-разработчика (habrahabr.ru/post/239065/), стараясь на них ответить;
    – читайте хороших авторов: Дуглас Крокфорд, Джон Рейзиг, Стоян Стефанов;
    – найдите на GitHub людей, которые согласятся ревьюить Ваш код, я серьезно!

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

    Желаю успеха!
    Ответ написан
    10 комментариев
  • Как правильно подготовиться до уровня Junior PHP?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    без фреймворка далеко не уедешь, сейчас все на них, смотри в вакансиях, какие популярны (Симфони, Ии, реже Ларавель и совсем уж редко Фалькон) и на каждом сделай свой сайт. Сделаешь - можешь назваться джуниором
    Ответ написан
    2 комментария
  • Первая вёрстка. Чему дальше учится и что подтянуть?

    @artem_music
    564435ee5fa64fe280ce5ed27a99f77d.png
    Ответ написан
    Комментировать
  • Научиться парсингу - с чего начать?

    kawabanga
    @kawabanga
    1) Нужно иметь представление, как загружаются и работают сайты. Тут необходимо иметь представление и о том, что полезный контент может появится на сайте и после загрузки через определенное время.

    2) Нужно иметь представление, как работает самый обычный способ получения контента - Curl. Попробуйте скопировать что то, поработать, представить в xml документ и тд. Тут вы определитесь с принципом работы парсера.
    - парсер получает вводую информацию -> с учетом программы и вводных данных, парсер запрашивает определенные данные -> парсер обрабатывает данные для пользователя -> при необходимости, парсер повторяет запрос (инициированный пользователем или рекурсий) -> конец

    3) Далее вы дойдете до механизмов защиты от парсинга:
    - ограничение запросов на 1 ip, на один клиент и тд
    - подгузка информации после загрузки контента
    - дополнительный запрос на подгрузку контента с CSRF и другими способами
    - блокирование ip
    Это откроет вам парсеры типа PhantomJs, Научит пользоваться прокси, мимикрировать под популярные браузеры и тд.
    Так же вы дойдете до многопоточности работы парсера, и подумаете о переходе на C и подобный язык программирования. Общаясь с сайтом уже посредством api.

    А дальше, сталкиваяь с новыми проблемами, будете их решать.
    Ответ написан
    1 комментарий