Антивирусы

Лаборатория Касперского

Надежный антивирус и другие защитные решения для дома и бизнеса. Продукты «Лаборатории Касперского» защитят ваши устройства от вирусов и онлайн угроз.

Dr.Web

«Доктор Веб» – российский разработчик антивирусных программ и сервисов для предоставления услуг информационной защиты для корпоративных и частных пользователей.

ESET NOD32

ESET NOD32 — эксперт в области защиты от киберпреступности и компьютерных угроз. Миллионы пользователей выбирают антивирусы ESET за их надежность и высокий уровень защиты.

Онлайн Переводчики

Google Переводчик

Бесплатный сервис Google позволяет мгновенно переводить слова, фразы и веб-страницы с английского на более чем 100 языков и обратно.

Бесплатный переводчик онлайн и словарь PROMT

Онлайн-переводчик текстов и онлайн-словарь с поиском для английского, немецкого и других языков. Грамматика, произношение, транскрипция и примеры перевода.

TCP-IP

Стек протоколов TCP/IP — набор сетевых протоколов передачи данных, используемых в сетях, включая сеть Интернет. Название TCP/IP происходит из двух наиважнейших протоколов семейства — Transmission Control Protocol (TCP) и Internet Protocol (IP), которые были разработаны и описаны первыми в данном стандарте.

Протоколы работают друг с другом в стеке (англ. stack, стопка) — это означает, что протокол, располагающийся на уровне выше, работает «поверх» нижнего, используя механизмы инкапсуляции. Например, протокол TCP работает поверх протокола IP.

Протоколы этих уровней полностью реализуют функциональные возможности модели OSI. На стеке протоколов TCP/IP построено всё взаимодействие пользователей в IP-сетях. Стек является независимым от физической среды передачи данных.

Уровень

Пример

1

Канальный

Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM

2

Сетевой

TCP/IP это IP

3

Транспортный

TCP, UDP, SCTP, DCCP

4

Прикладной

HTTP, RTSP, FTP, DNS

Теперь рассмотрим подробнее эти уровни.

Канальный

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

Примеры протоколов канального уровня — Ethernet, IEEE 802.11 Wireless Ethernet, SLIP, Token Ring, ATM.

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

Сетевой

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

Транспортный

Протоколы транспортного уровня могут решать проблему негарантированной доставки сообщений («дошло ли сообщение до адресата?»), а также гарантировать правильную последовательность прихода данных. В стеке TCP/IP транспортные протоколы определяют, для какого именно приложения предназначены эти данные.

Протоколы автоматической маршрутизации, логически представленные на этом уровне (поскольку работают поверх IP), на самом деле являются частью протоколов сетевого уровня.

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

TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.

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

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

И TCP, и UDP используют для определения протокола верхнего уровня число, называемое портом.

Прикладной

На прикладном уровне работает большинство сетевых приложений. Эти программы имеют свои собственные протоколы обмена информацией, например, HTTP (протокол передачи гипертекста) для WWW (World Wide Web), FTP (передача файлов), SMTP (электронная почта), SSH (безопасное соединение с удалённой машиной), DNS (преобразование символьных имён в IP-адреса) и многие другие. В массе своей эти протоколы работают поверх TCP или UDP и привязаны к определённому порту.

Сравнение с моделью OSI

Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.

К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между транспортным и сетевым уровнями.

Работа в командной строке Windows

В принципе в командной строке Windows всё просто. Любой, кто умеет печатать, сможет без труда работать в ней. Но для человека непосвященного командная строка может показаться сложной. Чтобы без проблем освоиться, надо знать основные команды и общие правила работы.

Запуск командной строки

Наиболее часто встречающиеся рекомендации по запуску звучат так: Пуск, выполнить, cmd.

В меню пуск присутствует пункт Выполнить. Он запускает программу, которая позволяет передавать единичные команды системе Windows. В данном случае команда cmd запускает исполняемый файл cmd.exe, находящийся в папке system32.

Вот полный путь к командной строке:

C:\Windows\System32\cmd.exe

На некоторых версиях Windows пункт меню Выполнить по умолчанию убран. В этом случае жмёте WIN + R, вводите cmd, далее нажимаем Enter.

Команда «Выполнить»

Также можно запустить командную строку непосредственно из папки system32, сделав ярлык для запуска на рабочем столе (кликаем на cmd.exe правой клавишей мыши и в меню выбираем пункт Отправить / Рабочий стол) или же через диспетчер задач (кнопка Запустить новую задачу > cmd > OK).

Создание задачи из диспетчера задач

По умолчанию в командной строке нельзя работать мышью (перемещать курсор или выделять текст). Это неудобно вообще и новичкам в особенности. К тому же чёрный экран выглядит как-то слишком мрачно и уныло. Поэтому после запуска командной строки нужно будет изменить её настройки. Жмём правой клавишей на окне cmd и выбираем Значения по умолчанию. Стоит сразу отметить, что настройки умолчаний относятся к cmd.exe в целом, а свойства к конкретному открытому окну.

В появившемся окне свойств командной строки видим четыре вкладки:

На вкладке Параметры стоит отметить пункты отбрасывать повторения (чтобы снизить заполнение буфера команд) и выделение мышью (чтобы можно было использовать мышь в работе).

На вкладках Шрифты и Цвета всё просто: выбираете размер, тип и цвет шрифта, а также фоновый цвет окна. Отмечу только, что размер шрифта влияет на размеры окна командной строки, поэтому его надо выставлять до размеров окна, а не после.

Во вкладке Расположение задаются размеры окна и его начальное расположение при запуске. Я так до конца и не понял в каких единицах представлены величины, поэтому размер советую выставлять, руководствуясь окном предпросмотра слева.

Команды командной строки

Для вывода полного списка командщ достаточно набрать команду help и нажать Enter.

help — вывод справки по командам
help CD или CD /? — вывод справки по одной команде (для команды CD)

cd \ — переход в корневой каталог
cd ../ — переход в родительский каталог
D: — переход на диск D.

dir — вывод всего содержимого папки
dir *.exe — вывод списка exe-файлов папки
cls —очистить экран командной строки

Командная строка запоминает команды, которые вы вводите. Листать их можно клавишами ⇑ и ⇓. Можно просматривать содержимое папки при помощи клавиши Tab (Shift+Tab листает в обратном порядке). Можно пролистать файлы на конкретную букву или буквы. Например, напечатав букву s и нажимая Tab, можно пролистать только файлы и папки, начинающиеся на эту букву (system, system32, system.ini и т.д.).

Например, вам надо перейти из корня диска C в папку system32, найти и запустить в ней контрольную панель. Можно просто напечатать:

C:\windows\system32\control.exe

Но это не всегда быстро и удобно, к тому же не всегда знаешь — что конкретно надо набирать. Поэтому можно набрать команду cd, затем после пробела набрать wi, пролистать клавишей Tab до папки windows, поставить после неё слэш, набрать буквы sy, пролистать клавишей Tab до папки system32, затем опять слэш и то же самое с control.exe.

C:\cd windows\system32\control.exe

Этот способ с табом куда быстрее в большинстве случаев, чем простой набор, так как названия файлов и папок могут быть длинными.

При включении поддержки мыши копировать информацию из командной строки можно выделив участок текста мышью и нажав Enter. Правая клавиша мыши, напротив, вставляет информацию из буфера обмена в командную строку.

На этом пока закончим. Спасибо за прочтение статьи.

Сетевая модель OSI

Сетевая модель OSI (англ. open systems interconnection basic reference model — базовая эталонная модель взаимодействия открытых систем) — сетевая модель стека сетевых протоколов OSI/ISO.

В связи с затянувшейся разработкой протоколов OSI, в настоящее время основным используемым стеком протоколов является TCP/IP, он был разработан ещё до принятия модели OSI и вне связи с ней.

Уровни модели OSI

Тип данныхУровень (layer) Функции
Данные 7. Прикладной (application) Доступ к сетевым службам
Поток 6. Представительский (presentation) Представление и шифрование данных
Сеансы 5. Сеансовый (session) Управление сеансом связи
Сегменты / Дейтаграммы 4. Транспортный (transport) Прямая связь между конечными пунктами и надежность
Пакеты 3. Сетевой (network) Определение маршрута и логическая адресация
Кадры 2. Канальный (data link) Физическая адресация
Биты 1. Физический (physical) Работа со средой передачи, сигналами и двоичными данными

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

Прикладной уровень

Прикладной уровень (уровень приложений; англ. application layer) — верхний уровень модели, обеспечивающий взаимодействие пользовательских приложений с сетью.

Позволяет приложениям использовать сетевые службы:

  • удалённый доступ к файлам и базам данных,
  • пересылка электронной почты;
  • отвечает за передачу служебной информации;
  • предоставляет приложениям информацию об ошибках;
  • формирует запросы к уровню представления.

Протоколы прикладного уровня: RDP (Remote Desktop Protocol), HTTP (HyperText Transfer Protocol), SMTP (Simple Mail Transfer Protocol), SNMP (Simple Network Management Protocol), POP3 (Post Office Protocol Version 3), FTP (File Transfer Protocol) и другие.

Представительский уровень

Представительский уровень (уровень представления; англ. presentation layer) обеспечивает преобразование протоколов и шифрование/дешифрование данных. Запросы приложений, полученные с прикладного уровня, на уровне представления преобразуются в формат для передачи по сети, а полученные из сети данные преобразуются в формат приложений. На этом уровне может осуществляться сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.

Уровень представлений обычно представляет собой промежуточный протокол для преобразования информации из соседних уровней. Это позволяет осуществлять обмен между приложениями на разнородных компьютерных системах прозрачным для приложений образом. Уровень представлений обеспечивает форматирование и преобразование кода. Форматирование кода используется для того, чтобы гарантировать приложению поступление информации для обработки, которая имела бы для него смысл. При необходимости этот уровень может выполнять перевод из одного формата данных в другой.

Уровень представлений имеет дело не только с форматами и представлением данных, он также занимается структурами данных, которые используются программами. Таким образом, уровень 6 обеспечивает организацию данных при их пересылке.

Сеансовый уровень

Сеансовый уровень (англ. session layer) модели обеспечивает поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время. Уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений.

Протоколы сеансового уровня: ADSP (AppleTalk Data Stream Protocol), ASP (AppleTalk Session Protocol), H.245 (Call Control Protocol for Multimedia Communication) и другие.

Транспортный уровень

Транспортный уровень (англ. transport layer) модели предназначен для обеспечения надёжной передачи данных от отправителя к получателю. При этом уровень надёжности может варьироваться в широких пределах. Существует множество классов протоколов транспортного уровня, начиная от протоколов, предоставляющих только основные транспортные функции (например, функции передачи данных без подтверждения приема), и заканчивая протоколами, которые гарантируют доставку в пункт назначения нескольких пакетов данных в надлежащей последовательности, мультиплексируют несколько потоков данных, обеспечивают механизм управления потоками данных и гарантируют достоверность принятых данных. Например, UDP ограничивается контролем целостности данных в рамках одной датаграммы и не исключает возможности потери пакета целиком или дублирования пакетов, нарушения порядка получения пакетов данных; TCP обеспечивает надёжную непрерывную передачу данных, исключающую потерю данных или нарушение порядка их поступления или дублирования, может перераспределять данные, разбивая большие порции данных на фрагменты и, наоборот, склеивая фрагменты в один пакет.

Протоколы транспортного уровня: ATP (AppleTalk Transaction Protocol), CUDP (Cyclic UDP), DCCP (Datagram Congestion Control Protocol), FCP (Fiber Channel Protocol) и другие.

Сетевой уровень

Сетевой уровень (англ. network layer) модели предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и «заторов» в сети.

Протоколы сетевого уровня маршрутизируют данные от источника к получателю. Работающие на этом уровне устройства (маршрутизаторы) условно называют устройствами третьего уровня (по номеру уровня в модели OSI).

Протоколы сетевого уровня: IP/IPv4/IPv6 (Internet Protocol), IPX (Internetwork Packet Exchange, протокол межсетевого обмена), X.25 (частично этот протокол реализован на уровне 2), CLNP (сетевой протокол без организации соединений), IPsec (Internet Protocol Security). Протоколы маршрутизации — RIP (Routing Information Protocol), OSPF (Open Shortest Path First).

Канальный уровень

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

Спецификация IEEE 802 разделяет этот уровень на два подуровня: MAC (англ. media access control) регулирует доступ к разделяемой физической среде, LLC (англ. logical link control) обеспечивает обслуживание сетевого уровня.

На этом уровне работают коммутаторы, мосты и другие устройства. Эти устройства используют адресацию второго уровня (по номеру уровня в модели OSI).

В программировании этот уровень представляет драйвер сетевой платы, в операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровней между собой. Это не новый уровень, а просто реализация модели для конкретной ОС.

Примеры таких интерфейсов: ODI, NDIS, UDI.

Физический уровень

Физический уровень (англ. physical layer) — нижний уровень модели, который определяет метод передачи данных, представленных в двоичном виде, от одного устройства (компьютера) к другому. Составлением таких методов занимаются разные организации, в том числе: Институт инженеров по электротехнике и электронике, Альянс электронной промышленности, Европейский институт телекоммуникационных стандартов и другие. Осуществляют передачу электрических или оптических сигналов в кабель или в радиоэфир и, соответственно, их приём и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов.

На этом уровне также работают концентраторы, повторители сигнала и медиаконвертеры.

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

Протоколы физического уровня: IEEE 802.15 (Bluetooth), IRDA, EIA и другие.

Критика

В конце 90-х годов семиуровневая модель OSI критиковалась отдельными авторами. В частности, в книге «UNIX. Руководство системного администратора» Эви Немет (англ. Evi Nemeth) писала:

Пока комитеты ISO спорили о своих стандартах, за их спиной менялась вся концепция организации сетей и по всему миру внедрялся протокол TCP/IP.

И вот, когда протоколы ISO были наконец реализованы, выявился целый ряд проблем:

  • эти протоколы основывались на концепциях, не имеющих в современных сетях никакого смысла;
  • их спецификации были в некоторых случаях неполными;
  • по своим функциональным возможностям они уступали другим протоколам;
  • наличие многочисленных уровней сделало эти протоколы медлительными и трудными для реализации.

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

Сервисы для публикации кода в интернете

Бывают ситуации, когда необходимо поделиться каким-то исходным текстом программы с кем-то, при этом сохраняя его форматирование.

Ниже представлены сервисы, которые позволяет загружать отрывки кода, для возможности его просмотра окружающими.

Pastebin.com

Pastebin — это веб-сайт, на котором вы можете хранить текст в Интернете в течение определенного периода времени, сохраняя его форматирование.

GitHub Gist

Gist — это простой способ поделиться фрагментами и пастами с другими. Все gists — GIT-хранилища, поэтому они автоматически управляются версиями, становятся доступными и пригодными для использования в качестве GIT-репозитория.

Ubuntu Pastebin

Ubuntu Pastebin предназначен для использования в качестве краткосрочного обмена вставленной информацией между сторонами.

JsFiddle

JsFiddle позволяет легко тестировать фрагменты кода JavaScript / CSS / HTML на лету, добавляя дополнительные библиотеки, такие как jQuery.

CodePen

Онлайн-площадка для тестирования и обмена фрагментами кода HTML, CSS и JavaScript. Введите свой код в трех соответствующих панелях и посмотрите, как все это происходит вместе. Вы можете легко делиться и развивать свои собственные или другие творения.

JS Bin

JS Bin — бесплатный онлайн-редактор HTML, CSS и Javascript.

Ideone

Ideone.com — это … pastebin. Но пастебин, как никто другой в Интернете. Более точное выражение будет «онлайн-мини-среда IDE и инструмент отладки».

Hastebin

Редактор Pad для исходного кода. Обмен кодом — это хорошо, и это должно быть легко сделать.

Write.as

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

Ghostbin

Ghostbin — это сервис папок с открытым исходным кодом.

Repl.it

Онлайн-переводчики в JavaScript. Онлайн-кодирование и REPL. Запустите и обменивайтесь кодами.

Plunker

Plunker — это онлайн-сообщество для создания, совместной работы и обмена идеями веб-разработки.

Liveweave

Liveweave — это игровая площадка HTML5, CSS3 и JavaScript для веб-разработчиков и дизайнеров.

HTMLhouse

HTMLhouse позволяет быстро опубликовать HTML-код.

Если вы знаете другие похожие сервисы публикации исходных текстов в интернете, пишите в комментариях.

Нужна ли математика программисту

Ответ на этот вопрос немножечко двоякий. Можно сказать, и «Да» и «Нет» и быть правдивым и в том и в другом случае.

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

У первых математика вообще является очевидным: математика – это то, что они изучают. Естественно, получилось так, что большинство преподавателей преподавали программирование исходя из математики. Они говорили про математические модели, они выстраивали математические формулы, даже подходили к разработке программного обеспечения с точки зрения математика, а не с точки зрения программиста. С другой стороны, если они делали их на базе инженерии, то там математика все равно была везде, потому что инженерия как вы понимаете для математика – теоретическая, прикладная и так далее. Но всем математика была нужна и если спросить: «Нужна ли математика инженеру?» звучало весьма странно. Естественно нужна. Даже посмотрите на само слово «Инженер-программист». То есть по какой-то причине исторически так получилось, что программистов приписали к инженерам.

Но ведь это не совсем правильно. Если мы подумаем об этом, то можно было бы приписать их ко многим другим. К примеру, я могу сказать, что лингвистика очень сильно помогает программисту. Именно в этом есть ключ. Нужна ли программисту математика? Да, она нужна, если мы говорим о том, что, если она поможет программисту в решении определенных задач. Какие задачи вам поможет решить математика? В основном задачи, которые решены за вас какими-то библиотеками. Например, вы хотите написать на ассемблере для самого процессора какую ту библиотеку, к примеру библиотеку, которая будет высчитывать вам что-то. Естественно, вам нужна математика. В процессоре ограниченное количество операций и вам нужно все остальные операции суметь выразить теми операциями, которые делает процессор. У процессора нет квадратного корня и многих других задач. Вам нужно выразить одну вещь которую вы уже знаете, к который вы привыкли, как например на калькуляторе, она занимает всего лишь одну кнопку. Здесь вам придется ее выражать другими какими-то возможностями этого процессора. Поэтому вам нужна математика и какие-то ее знания. Или, например, вам надо занимать чем-либо, что связанно с 3D-графикой. Это проекция 3D-мира из одно геометрии в другую. Геометрия – это часть математики. Таким образом в этом случае вам нужна математика. В том случае, если вы не находитесь в первых рядах тех людей, которые делают что-то, что еще не было решено конкретными библиотеками, то в этом случае математика вам не нужна. Ведь все, что вы будете делать – это вызывать уже готовые библиотеки.

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

Тем не менее есть одна вещь, где математика помогает всем программистам. Это, например, математика, которая связана со сложностью алгоритма. Но что происходит там? Она там настолько простая, что если вы закончили шесть классов школы, то вы уже должны понять ее. Зачем вам изучать всю математику, если она вам не нужна? Естественно, ее понимание вам поможет. Если сказать, что вы знаете всю математику, то она вам поможет. Это тоже самое, если вы знаете лингвистику, то она вам поможет в программировании. Если вы знаете что-нибудь, например, о строении человеческого глаза и вы делаете обработки рисунков, то вам это поможет. Естественно это вам поможет. Любые знания вам помогут. Любые знания — это хорошо, но это не обязательные знания. Вы сможете построить, не зная всей математики, модель перевода из одной координаты в другую и создание проекции. В любом случае, если вы можете, вам стоит продвигаться вперед. Каким-то образом изучать математику. Каким-то образом изучать другие науки, если это вам интересно, оно вам поможет. Если вы считаете, например, что вам нужно знать всю математику, чтобы программировать обычные веб-приложения скорее всего вы сами себя обманываете. Вам намного лучше потратить немножечко времени на изучение парадигм программирования, разных способов программирования, разных способов создания прототипов и так далее. Вам это поможет лучше.

Инструменты эффективной веб-разработки

Пакетные менеджеры

Bower

Популярный менеджер для клиентского JavaScript, который занимается установкой пакетов вместе с их зависимостями.

Composer

Популярный пакетный менеджер для PHP, который предоставляет средства по управлению зависимостями в приложении.

Библиотеки JavaScript

JQuery

Библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API для работы с AJAX.

JQuery UI

Библиотека JavaScript с открытым исходным кодом для создания насыщенного пользовательского интерфейса в веб-приложениях, часть проекта jQuery. Построена поверх главной библиотеки jQuery и предоставляет разработчику упрощенный доступ к её функциям взаимодействия, анимации и эффектов, а также набор виджетов.

Фреймворки JavaScript

Backbone.js

JavaScript-фреймворк, основанная на шаблоне проектирования Model-View-Presenter (MVP), предназначена для разработки веб-приложений с поддержкой RESTful JSON интерфейса.

Angular.js

Открытая и свободная платформа для разработки веб-приложений, написанная на языке TypeScript, разрабатываемая командой из компании Google, а также сообществом разработчиков из различных компаний.

React.js

JavaScript-фреймворк с открытым исходным кодом для разработки пользовательских интерфейсов. React разрабатывается и поддерживается Facebook, Instagram и сообществом отдельных разработчиков и корпораций.

Vue.js

JavaScript-фреймворк с открытым исходным кодом для создания пользовательских интерфейсов. Легко интегрируется в проекты с использованием других JavaScript-библиотек.

CSS фреймворки

Bootstrap

Свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML- и CSS-шаблоны оформления для типографики, веб-форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейса, включая JavaScript-расширения.

Foundation

Предоставляет адаптивную сетку и компоненты HTML, CSS UI, шаблоны и фрагменты кода, включая типографику, формы, кнопки, навигацию и другие элементы интерфейса, а также дополнительные функции, предоставляемые расширениями JavaScript.

CSS препроцессоры

Less

Надстройка над CSS. Динамический язык стилей.

Sass

Модуль, включенный в Haml. Это метаязык на основе CSS.

Compass

CSS фреймворк с открытым исходным кодом, который использует язык таблиц стилей Sass, чтобы сделать написание таблиц стилей мощнее и проще.

Сборщики проектов

Grunt

Менеджер задач для автоматического выполнения рутинных операций, написанный на языке программирования JavaScript. Программное обеспечение использует командную строку для запуска задач, определённых в файле Gruntfile.

Gulp

Менеджер задач для автоматического выполнения часто используемых задач, написанный на языке программирования JavaScript. Программное обеспечение использует командную строку для запуска задач, определённых в файле Gulpfile. Создан как ответвление от проекта Grunt, чтоб взять из него лучшие практики.

Brunch

Строит, связывает, компилирует, объединяет и сокращает ваше HTML-приложение очень простым способом.

Mimosa

Быстрый инструмент сборки для современного веб-разработки.

Автотесты

PHPUnit

Является структурой модульного тестирования для языка программирования PHP.

Mocha

JavaScript тест-фреймворк, который можно запускать как на node.js, так и в браузере, удобен для асинхронного тестирования.

Selenium

Инструмент для автоматизации действий веб-браузера. В большинстве случаев используется для тестирования Web-приложений, но этим не ограничивается.

Browsersync

Ускоряет процесс тестирования приложений в различных браузерах, синхронизируя URL-адреса, взаимодействия и изменения кода на нескольких устройствах.

Если вы знаете другие интересные инструменты для веб-разработки, пишите в комментариях.

Форумы программистов и системных администраторов

В этой статье представлен мой личный список форумов для программистов и системных администраторов.


Исходники.RU

Информационный сервер для программистов: исходники со всего света.

Серый форум

Данный ресурс посвящён программированию на различных макроязыках и в скриптовых средах.

КиберФорум

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

Форум разработчиков игр

Как сделать игру: программирование игр, создание графики для игры, игровой дизайн, игровая индустрия, поиск работы и сотрудников, игровые проекты.

CodeNet

Все для программиста.

VPF::

Форум программистов Vingrad.

Клуб ПРОграммистов

Форум профессиональных и начинающих программистов.

Форум программистов

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

Технический форум

Компьютерный форум о железе и не только.

Codeby.net

О прикладном программировании и компьютерной безопасности. Методы и средства защиты информации компьютерных сетей и систем. Обеспечение IT-безопасности.

Компьютерный форум Ru.Board

О компьютерах и программах.

Если вы знаете другие интересные форумы для программистов и системных администраторов, пишите в комментариях.