• Какую книгу прочесть по javascript/jquery, чтобы перестать писать индусский код?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну вообще согласен с @FoxInSox. Либо посмотрите на гитхабах опенсурс проектики.

    А если смотреть ваш код то...
    $(document).on('click', '.filter fieldset.second .second-param .country .sended-param', function(){

    Это может быть стартовой точкой для упрощения кода. У вас монструозные и неповоротливые конструкции из селекторов. Селекторы повторяются и т.д. Можно искать от контейнера а не по всему документу... вариантов оптимизировать этого дело масса. Один из вариантов - использовать data-* атрибуты для биндинга ивентов и поиска элементов. Таким образом наш код не зависит от классов и прочей чуши, которая нужна для представления. Посмотрите как это реализовано в twitter bootstrap.

    Вообще ваша главная проблема - дублирование кода и нецелесообразное использование селекторов. Так же старайтесь использовать доступные в jQuery промисы вместо того чтобы вкладывать один колбэк в другой.
    Ответ написан
    Комментировать
  • Есть ли более элегантное решение у этой задачи?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Можно чуть упростить условия:
    for(var i = 0;i<20;i++) {
      var str = '';
      if (i % 3 === 0) {
        str += 'Fizz';
      }
      if (i % 5 === 0) {
          str += 'Buzz';
      }
    
      console.log(str ? str : i);
    }


    Последовательности чисел еще можно генерить как-то так:
    var range  = Array.apply(0, Array(20)).map(function(n , i) { return i; });

    но это уже мелочи.
    Ответ написан
    3 комментария
  • Что изучить перед написанием простой адресной книги?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Вы правильно решили, что для развития вам необходимо написать готовый сайт. Вам это даст гораздо больше, чем просто чтение книг без практики. Но тогда доведите до победного конца - не только напишите сайт, но и заведите домен, арендуйте хостинг и выложите свой сайт туда.
    В начале разработки любого проекта правильно будет взять бумажку с ручкой и записать (зарисовать) схему будущего проекта.
    Чётко запишите на бумаге одним предложением цель проекта. Продумайте используемые технологии и также запишите их на бумагу (php, mysql, ?). Позже вы сможете проанализировать, насколько вы смогли предугадать конечную архитектуру, и поможет в дальнейшем правильнее продумывать эти вопросы.
    Отдельным списком запишите те функции проекта (фичи, features), которые вы хотите реализовать.
    Дальше хорошо бы прикинуть структуру базы данных - какие таблицы планируются и какие поля в них должны быть.
    Только после этого можно приступать к программированию.

    Для начала я посоветую написать этот сервис на чистом php, без использования любых фреймворков. Иначе вы будете завалены новой информацией, которую нужно будет освоить, не связанную с конкретно задачей.
    Вам нужно будет сделать несколько страниц:
    1) главная, также можно добавить страницы о проекте, о команде, и прочие служебные
    2) регистрация и логин (логин можно на главной), по хорошему, ещё и восстановление пароля
    3) список телефонов
    4) добавление телефона
    5) редактирование телефона
    6) удаление телефона (скорее всего, кнопка удаления будет на странице списка, но такую ответственную операцию нужно подтверждать, поэтому - отдельная страница)
    Страницы 3-6 можно реализовать в одном php-файле, используя параметры страницы, а можно сделать и в отдельных файлах.

    Когда сделаете, тогда нужно подумать о развитии получившегося сайта, и начать изменять его:
    1) добавить шаблоны, чтобы разделить html-код (шаблон) и php-код (контроллер)
    2) добавить ЧПУ, чтобы адреса страниц в браузере не содержали .php и ?

    Когда сделаете, тогда уже можно перейти к повторению того же сервиса на одном из фреймворков. Могу порекомендовать микрофреймворк Silex. Вы сможете увидеть, что многие моменты, которые вы раньше делали самостоятельно, уже реализованы в фреймворке. Но та работа была не напрасной, если не знать, как это работает внутри. то сложно понять, почему в фреймворке всё реализовано именно так.
    Ещё из популярных фреймворков можно рассмотреть Laravel и Symfony2. Последний достаточно сложный фреймворк для больших проектов, но он частично похож на Silex (потому что Silex основан на Symfony2). Laravel - новый мощный фреймворк, стремительно набирающий популярность. Он простой для старта, но обладает высокой мощностью, больше, чем Silex.
    Ответ написан
    Комментировать
  • Как новичку перейти на Linux?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Из дистрибутивов всё же рекомендую обычный Ubuntu - Canonical хорошо постарались, чтобы система работала максимально быстро и качественно на максимальном количестве железа без каких-либо танцев с бубном вообще. Позже сможете перейти на что угодно.
    Книгу возьмите любую, например, по администрированию Linux. Чаще всего там и рассматриваются примеры как минимум для двух "семейств" дистрибутивов: Debian/RedHat.
    С разнообразными безделушками и программированием вероятнее всего будет ещё проще, чем в Windows, но тут тоже смотря что и как.
    Попробуйте около двух недель, а потом решите продолжать или нет. Я после первых двух недель с удивлением обнаружил, что Windows не включил ни разу. Так и живем теперь)
    Ответ написан
    Комментировать
  • Как начать делать сайт для организации по заданной идее, если у тебя нет опыта?

    iiil
    @iiil
    Инженер и вэб-дизайнер, рисую.
    Да все на самом деле просто. Смотрите на сайты других компаний и делайте себе такое же.
    1. Про юзабилити общие понятия Веб-Дизайн: книга Стива Круга или "не заставляйте меня думать!" (да, она старая)
    2. Кирсанов, Веб-дизайн (да, и она старая)
    3. html/css - или используйте фреймворк, или смотрите как сделано в нем, например в бутстрап
    4. Сразу озаботьтесь вопросом адаптивности, потому что подход: ну мне бы хоть пока по-простому сделать - неверный
    А так, вопрос Ваш слишком общий, Вы на этапы разбейте и начинайте с поиска. Не изобретайте велосипед, задавайтесь почаще вопросом - почему на сайтах делают именно так, а не вопросом - а чем мой вариант хуже.
    Ответ написан
    1 комментарий
  • Как сделать калькулятор с чекбоксом, радиокнопками и полями заполнения цифр на jquery?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Написать самому.
    Там логика же элементарная.
    Onchange всех изменяемых полей вешаете вызов функции в которой получаете значения всех полей по их id и на основе этого делаете рассчет.
    Требования к содержимому полей решаются с помощью плагинов валидации.
    Ответ написан
    Комментировать
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    Подкину литературы, ссылок, дабы была подмога в выборе области.
    А то, в каком порядке изучать - так образование трудно облачить в алгоритм. Необходимо знать немного о всем и все о немногом. Главное чтобы пёрло и была поддержка в лице единомышленников.

    Из того, на что обязательно нужно взглянуть.

    Математика (база, во всех ее проявлениях):
    Кнут Искусство программирования
    Вирт Алгоритмы + структуры данных = программы
    Ахо,Лам,Сети,Ульман - Компиляторы. Принципы, технологии, инструменты.
    Кормен. Алгоритмы. Построение и анализ.
    Скиенна. Алгоритмы. Руководство по разработке.
    Таненбаум. Распределенные системы.
    Таненбаум. Современные операционные системы

    Сети:
    Олифер. Компьютерные сети. Принципы и технологии.
    Davies J. - Understanding IPv6

    Программирование паяльником:
    Титце, Шенк. Искусство сехмотехники
    Блог easyelectronics

    Hardware:
    David A. Patterson, John L. Hennessy - Computer Organization and Design
    David A. Patterson, John L. Hennessy - Computer architecture

    ИИ:
    Норвиг. Искусственный интеллект.

    Информационная безопасность:
    Шнайер. Прикладная криптография.
    Головоломки для хакеров (забавная книга, автора не помню к сожалению, натуральная практика по программированию)
    The Giant Black Book of Computer Viruses
    Михайлов Д. М., Жуков И. Ю. - Защита мобильных телефонов от атак - 2011
    Абашев - Ассемблер в задачах защиты информации
    Nmap Network Discovery
    Russel, Mullen, Long. Stealing the Network

    Masterminds.of.Programming.Conversations.with.the.Creators.of.Major.Programming.Languages
    Брукс - Мифический человеко-месяц
    Как выучить язык программирования за 10 лет

    Для фантазии:
    Нейман - Теория самовоспроизводящихся автоматов
    Kurzweil - Singularity is near

    Выберите проект который реально сделает вашу жизнь проще (поможет вам жить). Возможно это будет автоматизация каких-то рутинных задач... Такие идеи практически наверняка можно будет продать или выложить на всеобщее обозрение.
    Не отчаивайтесь, если ваша идея уже будет гуглиться, уже будет кем-то решена. Скорее всего вы сможете сделать лучше и по-своему. Доводите до логического конца (если конкуренты обещают уже вотвот выпустить продукт - обещания это всего лишь обещания).

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

    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 комментарий
  • Как понять принципы ООП?

    onqu
    @onqu
    weasy
    Чтобы понять принципы ООП, книги не требуются. Взгляните вокруг себя. Всмотритесь в любой объект в реальном мире, опишите его наиболее подробно (материал, размер, цвет, вес, плотность, составные части и т.д.), это будут его свойства. Опишите, что и каким образом этот объект умеет делать (включаться, складываться, кушать электроэнергию, взаимодействовать с другими объектами или окружающей средой и т.д.), это будут его методы. Подумайте, для чего используется этот объект, что ему нужно изменить или добавить, чтобы использовать в других условиях или целях, и на основе всех собранных знаний создать более удобный экземпляр, это будет наследование и полиморфизм. Теперь немедленно забудьте обо всем, используйте объект по назначению, это будет инкапсуляция. Дальше останутся только тонкости выбранного Вами языка, шаблоны, методологии и прочаяие ересь тренды.
    Ответ написан
    2 комментария
  • Где ошибка в скрипте генератора чисел?

    DaFive
    @DaFive
    Приведите значения к намберу:
    case (self.fieldId + '-from'):
    	self.setMin(Number($(this).val()) );
    break;


    У меня все сразу заработало.
    Ответ написан
    Комментировать
  • Как посчитать свою профессиональную стоимость?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    Тренды и текущее состояние зарплат можно отслеживать, например, вот тут
    jobs.dou.ua/salaries
    Это Украина, но уровень актуален и для России, с небольшими плюс/минус.

    В качестве бенчмарка на указанном выше ресурсе фигурирует опыт работы в годах.
    Ответ написан
    4 комментария
  • Как осуществлен эффект появления на JS?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Я для фронтенда использую UIkit, там есть Scrollspy
    Ответ написан
    Комментировать
  • Правильно ли составлена функция php, mysql?

    R0s0maxa
    @R0s0maxa
    junior web-developer
    Сразу приучайте себя правильно именовать переменные.
    kolvo - показатель плохого тона и "поповщины", используйте number, num , amount, amt, quantity, qt, qty
    Ответ написан
    2 комментария
  • Правильно ли составлена функция php, mysql?

    Используйте PDO.

    Вот Вам на заметку. Думаю разберётесь сами что с этим делать.
    //-------------------------- Класс работы с базой ----------------------------//
    class DBPDO {
       // Используем статическую переменную для сохранения значений внутри класса
    	static private $database = NULL;
    	
    	// Конструктор выполняет соединение с БД возращает объект БД или false
    	private function __construct(){
    		try {
       		// Сразу задаём кодировку соединения
    			self::$database = new PDO('mysql:host=localhost; dbname=basename', 'user', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
       		// Устанавливаем уровень показа ошибок базы
       		self::$database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    		} catch (PDOException $e){
    			$error = $e->getMessage();
         		writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
       		return false;
    		}
    	}
    	
    	// Статическая функция синглтон для получения объекта ДБ
    	static public function dbconnect() {
    		if (self::$database == NULL) { new DBPDO(); }
    		return self::$database;
    	}
    	
    	// Функция выполнения запроса 
       static public function sql_query($query) {
       	try {
             $return = self::dbconnect()->query($query)->fetchAll(PDO::FETCH_ASSOC);
             if ($return === false) return false;
             if ((!isset($return[1]))&&(isset($return[0]))) $return = $return[0];
          } 
          catch (PDOException $e) { 
             $error = $e->getMessage();
         		writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
       		return false;
          }
    
       	return $return;
       }	
    
       // Запрос без выборки
    	static public function exec($query) {
          try { 
             return self::dbconnect()->exec($query);
          } 
          catch (PDOException $e) { 
             $error = $e->getMessage();
         		writelog('sql_error', date("y.m.d H:m:s")."\t".$error);
       		return false;
          }
    	}
    	
       // Экранирование спецсимволов
    	static public function quote($str) {
          return self::dbconnect()->quote($str);
    	}
    
    	// Получение id последней изменённой строки
    	static public function lastInsertId() {
          return self::dbconnect()->lastInsertId();
    	}
    }
    //----------------------------------------------------------------------------//
    Ответ написан
    2 комментария
  • Правильно ли составлена функция php, mysql?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Не совсем понял что вы хотите выяснить, просто запустите код. Так что просто пару советов:

    1) global $link; - старайтесь не использовать глобальные состояния. Коль уж пишите процедурный код - пусть он будет по настоящему процедурным:
    function show_banner($kolvo, $link) {

    2) старайтесь не делать вывод в функции которая у вас берет данные из базы - пусть она возвращает только данные (либо ничего в случае ошибки) а за вывод пусть отвечает другая функция.
    $banners = get_banners($count, $link);
    show_banners($banners);
    Ответ написан
    5 комментариев
  • Где почерпнуть информацию об методиках разработки на php и php frameworks?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Причин может быть много, от низкого уровня вас, как разработчика, до низкого уровня архитектуры приложения с которым вы работаете. Мне кажется что больше второе. Как минимум "магические свойства", код родительских классов... это уже нелохие сигналы. Конечно судить вне контекста тяжко без примеров.

    Ну а так, хотите best practice - учите Symfony или Zend. На данный момент это самые двинутые на best-practice фреймворки. Ниже уровнем (то есть больше упор идет в RAD и простоту разработки) идут Laravel и другие. Читайте про TDD/BDD/DDD, рефакторинг, паттерны программирования (не обязательно с привязкой к PHP, можно под Java, суть будет та же), принципы SOLID... Вообще пожалуй в обратном порядке...

    symfony.com/doc/current/quick_tour/the_big_picture.html
    https://knpuniversity.com/ - очень хорошие курсы по PHP, Symfony и не только.
    live.symfony.com/replay

    Так же...
    refactoring.guru - полезный проект по рефакторингу. Из него помимо того как рефакторить можно так же понять почему тот или иной код нужно рефакторить.
    habrahabr.ru/post/208442 - читать с комментами.
    Ответ написан
    2 комментария
  • Почему сайт в utf-8, а письма приходят в windows-1251?

    Пропишите кодировку в заголовке письма:
    $headers = "Content-type: text/html; charset=utf-8\r\n";
    Ответ написан
    1 комментарий
  • Указал неверные паспортные данные на agava.ru, что делать?

    @stas3572
    люди думать отучились - вопросы по любому поводу в интернетиках ищут (в тостере особенно)?
    Ответ написан
    Комментировать
  • Указал неверные паспортные данные на agava.ru, что делать?

    dimsog
    @dimsog
    Переносил код с PHP 4 на 7.4...
    Я думаю, первое, что необходимо сделать - связаться с поддержкой.
    Ответ написан
    3 комментария
  • Как переписать такой jQuery код на чистом Javascript?

    romanzhak
    @romanzhak
    Mathematician
    // получаете все тэги a, например
    var a = document.getElementsByTagName("a");
    // затем отсеиваете всех родителей 
    a[ item ].parentNode.nodeName.toLowerCase() === "li"
    Ответ написан
    Комментировать