Показаны сообщения с ярлыком JavaScript. Показать все сообщения
Показаны сообщения с ярлыком JavaScript. Показать все сообщения

Лексическая структура JavaScript



Лексема – это минимальная единица языка, имеющая самостоятельный смысл. К лексеме относятся: идентификаторы, ключевые слова, литералы, операции, символы, фразы, слова, разделители… Лексема располагается между пробелами, табуляцией или переносом строки.

Идентификатор – это имя переменной, функции, объекта, меток у некоторых циклов… Могут ли в качестве идентификатора выступать имена свойств и методов объекта, имена массивов?

Литерал – это число, строка или логическое значение, которые используются в качестве значения.
Например а = 5; 5 будет литералом, document.write(«Привет, Мир!»); «Привет, Мир!» будет литералом или return true; true будет литералом.

Операнд – это пременная или его значение, выступающее в качестве части выражения. Выражение тоже может быть операндом. Например, x = y + z; здесь в качестве операндов выступают x, z и y.

Оператор – это структурная единица программы, указывающее совершить какое либо действие, оканчивается точкой с запятой. Например, x = y + z;, условный оператор if () {}, циклы.Приведите пожалуйста еще примеры.

Инструкция – это оператор?

Выражение – это любая комбинация переменных и операций, которая может быть вычислена интерпретатором для получения значения. Пример: 5 + 3 – выражение.

Операция – это, почти тоже самое что и выражение. Операции могут быть арифметическими, логическими, сравнения и присваивания.

Ключевое слово – это часть синтаксиса ядра языка, так называемый предопределённый идентификатор. Его нельзя использовать в качестве имени идентификатора. Например, break, delete, function, if и т.д.

Зарезервированное слово – это часть синтаксиса ядра языка, которое планируется использовать в будущем, использовать их в качестве идентификатора не рекомендуется. Например: const, import, int, long и т.д.

источник

Open-source реализации компонентов для работы с тегами

http://stackoverflow.com/a/2674466

Простой аккуратный вариант:
https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/

Варианты, где можно выбирать теги из списка:

Интересный пример работы с select2:

Примеры реализации на CSS:

Какую технологию выбрать для проекта по разработке ПО

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

Если вам нужно создать мобильный интерфейс, то используйте jQuery.Mobile. Он построен поверх jQuery. Для темизации можно использовать ThemeRoller.

Если вы ищите технологию, которая бы позволила создать одним проектом сайт для трех основных форм-факторов (desktop, phone, tablet) то вам могут помочь мобильные возможности ASP.NET MVC 4. Если вы новичок, то для быстрого старта вы можете натравить на свою базу данных Lyle's MVC4 FoodTruck Recipe, этот инструмент сгенерирует вам страницы для просмотра и редактирования данных из вашей БД, и эти страницы будут оптимизированы для мобильных устройств.

Если вы ищите компоненты из которых можно создать интерфейс для web, iOS, Android и Windows Phone 10, то рассмотрите Mobiscroll.

Если вам нужно максимально точно определить устройство с которого запрашивается ваша веб-страница, то можно использовать библиотеки WURFL или 51Degrees.

Если нужно проверить скорость загрузки сайта, то используйте YSlow. Есть desktop-версия в форме расширения для браузера и мобильная версия. Также общий вес страницы можно вычислить с помощью прокси-сервера Fiddler.

Если вам нужно создать RESTful веб-сервис для запроса и обновления данных, то рассмотрите протокол Майкрософта - OData. Компания Microsoft выпустила OData SDK, состоящий из библиотек для Microsoft .NET Framework, AJAX, PHP, Java, C++JavaScript, WebOS, и Objective-C.

Если вам нужно создать бизнес-приложение вида формы-над-данными (forms-over-data), которое по сути представляет собой интерфейс для просмотра, добавления и редактирования данных, то рассмотрите возможности технологии Visual Studio LightSwitch. Если вы раньше писали на Delphi программки работающие с базами данных, то вам стоит посмотреть на LightSwitch, т.к. это более современная технология для решения подобных задач.

Если вам нужно создать database-driven сайт и вы не хотите использовать стек технологий Майкрософта, то рассмотрите простой и легкий в освоении фреймворк Keystone.js. В нем есть: моделирование данных, шаблонизация представлений, роутинг для навигации, формы и их валидация, пейджинг, аутентификация пользователей, административный интерфейс как у CMS, возможность создания REST API. Для его работы нужны Node.js и MongoDB. Фреймворк построен на базе фреймворка Express.js, который де-факто является стандартом для создания веб-приложений на Node.js. Фреймворк Keystone.js используется по принципу паттерна проектирования Model-View-Template. Для работы с MongoDB используется object document mapper (ODM) Mongoose. Для отображения данных используется JavaScript механизм шаблонизации Swig. Новые проекты на базе фреймворка Keystone.js создаются с помощью генератора приложений на основе Yeoman (набор инструментов для автоматизации рабочих процессов разработки).

Если вам нужно создавать документы в формате PDF на Java или C#, то используйте библиотеку iText Java library и её порт на C# -  iTextSharp library. Документация к сожалению представлена только для Java версии. Основное отличие PDF от HTML в том, что PDF не отделяет контент от его представления, так как это делает HTML и CSS. PDF отлично подходит для вёрстки изданий, когда важно чтобы всё было один в один строго до пикселя. Но с другой стороны такой подход затрудняет извлечение текста из PDF-документа. PDF задумывался как цифровой аналог бумаги и чернил. PDF по сути это низкоуровневое представление графики и текста.

Если вам нужно посмотреть, что происходит на TCP и IP уровнях сетевой модели, то вооружитесь сниффером Wireshark. Если вам нужно посмотреть HTTP и HTTPS траффик, то можно использовать отладочный прокси-сервер Fiddler

Если вам нужно поиграть с RESTful API используйте add-on Postman для браузера Chrome. С помощью него можно делать HTTP-запросы: GET, POST, PUT, и DELETE.

Операционные системы

OpenBSD

Если вам нужна безопасная и стабильная операционная система, то берите OpenBSD. К примеру, если вы занимаетесь поставкой интернет-услуг (Internet service providers) или производите встраиваемые системы (embedded systems), то OpenBSD подойдет. OpenBSD очень производительная система в том смысле, что старается в полной степени использовать железо на котором она работает. Система работающая на железе 1GB диска и 486 CPU может обеспечить работу DNS или веб-сервера. У OpenBSD конкурентоспособные возможности по балансировке нагрузки (load-balancer). Коммерческие аналоги для балансировки нагрузки могут стоить тысячи долларов. В OpenBSD интегрирован прекрасный файрвол, который может обеспечить контроль сетевых соединений и уберечь сервера от опасного трафика. OpenBSD может стать основой для IDS, веб-прокси, мониторинга трафика, управления почтой, веб-сервера, LDAP или базы данных. OpenBSD можно также приспособить и в качестве настольной системы для разработчика или админа: графические интерфейсы, офисные пакеты, веб-браузеры, инструменты разработки, среды приложений, сетевые серверы, снифферы пакетов и анализаторы трафика - всё это есть в ports collection.

Языки программирования

C++

Если вы пишите финансовое ПО на C++, то вам нужен тип decimal, для этого можно использовать decNumber libraryIntel Decimal Floating Point Math Library или GNU Multiple Precision Arithmetic Library. На Windows можно использовать тип данных DECIMAL вместе с Decimal Arithmetic Functions и Data Type Conversion Functions.

F#

Если вам нужно провести серию трансформаций над входными данными, то лучше писать программу в функциональном стиле. Возможности сопоставления с образцом (pattern matching) имеющиеся в функциональных языках позволят проанализировать входные данные и выбрать соответствующую трансформацию для этих данных. Функциональное программирование обеспечивает лучший подход к решению сложных вычислительных задач. Но чистые языки функционального программирования не подходят на роль универсальных языков программирования с помощью которых решается большинство рабочих задач обычных программистов, которые обслуживают потребности бизнеса. F# является одним из языков функционального программирования, который вобрал в себя аспекты императивной и объектно-ориентированной парадигмы, обеспечив тем самым возможности для написания любого типа программ.

JavaScript

Если вам нужно что-то вроде стандартной библиотеки к языку программирования JavaScript, то используйте Underscore.js. Библиотека содержит полезные функции для работы с объектами и массивами (коллекциями). Любой язык программирования на концептуальном уровне состоит из синтаксиса и библиотеки. У JavaScript собственная библиотека не слишком развита. Underscore.js может дать больше функциональности.

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

Если вам нужно создать информационно-ориентированный (data-driven) пользовательский веб-интерфейс, то используйте Knockout.js. Эта библиотека использует паттерн проектирования Model-View-ViewModel (MVVM). Упрощенно говоря Knockout.js нужен для связывания модели данных и HTML-кода отображающего эти данные.

Как установить JSDoc на Windows 10

Шаг 1

Скачать и установить node-v4.4.5-x64.msi.

Шаг 2

Чтобы установить JSDoc локально в текущую папку надо выполнить команду:
npm install jsdoc
Установка будет произведена в текущую папку по пути ./node_modules/.bin/jsdoc

Чтобы установить глобально надо выполнить команду:
npm install -g jsdoc
В таком случае jsdoc разместится по пути C:\Users\John\AppData\Roaming\npm\jsdoc.cmd

Шаг 3

Для генерации документации к файлу надо выполнить команду:
jsdoc script.js --destination ./doc/

Дайджест по саморазвитию в программировании №17

Dependency Injection · objc.io
Внедрение зависимости — Википедия
Dependency Injection в Objective-C с Магией и Кровью / Хабрахабр
Singletons in Objective-C - Matt Galloway

Double Click and NSCollectionView
End editing in an NSTextField
Working with Cocoa File Packages
Многопоточность в iOS. Введение в GCD
KVC Collection Operators - NSHipster

ios - How to call JavaScript Function in objective C - Stack Overflow
JavaScriptCore by Example | Big Nerd Ranch
Связь Objective-C и JavaScript
Taming JavascriptCore within and without WebView
Crossing the WebKit bridge

Современный учебник JavaScript
Как я научился любить скучные мелочи CSS
CSS background Property

Red's Toyland - Python and Objective C
Embedding Python in Objective-C: Part 2
Introduction — PyObjC — the Python ⟷ Objective-C bridge

Как пчёлы познали теорему Пифагора, а муравьи — абсолютный и относительный счёт - Научный блог

Микросервисы (Microservices) / Хабрахабр
Типичный программист – Сначала — монолит, или правильный путь к микросервисной архитектуре

Как объяснить что такое биткоин пятилетнему ребёнку
Майнинг и как он работает: матчасть / Хабрахабр

Самая простая реализация promises (обещаний) на JavaScript


В примере ниже в функцию doSomething передаются callback-функции для обработки результата либо ошибки, если результат не удалось получить.
doSomething(function(result) {
// success }, function(err) { // error });

Если нужно выполнить несколько функций последовательно, то в каждую функцию надо передавать callback-функцию, которая будет вызвана в конце функции. Пример:
doSomething1(function() {
doSomething2(function() { doSomething3(function() { }); }); });
В конце doSomething1 стоит вызов doSomething2, а в конце doSomething2 соотвественно doSomething3.

В следующем примере, все элементы массива обрабатываются асинхронной функцией. Непонятно как сделать что-то важное когда завершится последняя.
for (var i = 0; i < a.length; i++) {
doSomething(a[i], function() { ... }); }
Можно использовать рекурсию: для первого элемента вызвать doSomething, в коллбэке рекурсивно вызвать doSomething для следующего элемента, и удалить его из массива. Так до тех пор пока массив не окажется пустым. такие Примерно так же работают и Promises. Они позволяют записывать асинхронные функции в удобном последовательном виде.

Dart SDK 1.0

Dart — язык программирования, созданный Google. Dart позиционируется в качестве замены/альтернативы JavaScript, страдающего от «фундаментальных» изъянов, которые невозможно исправить путем эволюционного развития. 15 ноября 2013 года Google выпустила первую стабильную версию своего языка программирования — Dart SDK 1.0. Если у них все получится, то скоро разрабатывать клиент-сторону будет намного удобнее

Краткая история развития JavaScript

Язык JavaScript содержит в своем названии Java потому что изначально предполагалось использовать его как прослойку между HTML-разметкой страницы и Java-апплетами для несложных операций на клиенте.

Все клиентские решения по модуляризации JavaScript-кода строятся на основе замыканий.

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

Microsoft придумали XMLHttpRequest для динамической подгрузки контента с сервера.

AJAX - Asynchronous JavaScript and XML. XML в этой связке уступил место более лаконичному и JS-ориентированному формату JSON.

Под видом Java Lite в браузеры попал язык с забористой смесью парадигм, вобравшей многое как от объектно-ориентированного, так и от функционального подходов. Только вот прототипная модель наследования работала не так, как привычная классовая. А динамическая типизация значительно усложняла статический анализ кода. И работать нужно было по большей части с асинхронными запросами и событиями. Все это накладывалось на однопоточную среду выполнения в браузере, которая еще и временами безбожно тормозила.

Начались попытки создать библиотеки для того, чтобы получить общий интерфейс для всех браузеров, скрывающий разницу в реализации ими различного функционала, — их результатами стали Prototype, MooTools и, конечно, jQuery.

Проект CommonJS, цель которого — распространение JavaScript на другие платформы, стандартизация API и создание стандартной библиотеки. И во многом благодаря этому проекту сегодня существуют такие вещи, как Node.js и RequireJS.

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

Параллельно шла оптимизация JavaScript-интерпретаторов в браузерах — появлялись все более быстрые движки, такие как знаменитый V8 от Google, и в итоге стало возможным перенести часть логики приложений с сервера в браузерный JavaScript. Вот тут уже началось массовое внедрение на клиенте различных паттернов и практик, обкатанных в серверной разработке. Например, отлично вписался в клиентскую модель паттерн Model — View — Controller, разделяющий все компоненты на предназначенные для получения и хранения данных (Model), для отображения данных (View) и для организации взаимодействия и управления другими компонентами (Controller).