Интересная задачка по программированию

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

Перехват вызова функции в JavaScript

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

Шаблонизация на стороне клиента

Шаблонизация это привычное явление, если говорить о серверной части web-приложения. Шаблоны, обрабатывающиеся на стороне сервера, преобразуются в html-код, которой отдаётся клиенту, в качестве которого чаще всего выступает браузер. В таком подходе есть свои недостатки. Читать далее Шаблонизация на стороне клиента

Каррирование (карринг) в JavaScript

Нет, термин «каррирование» никак не связан со знаменитой приправой и вообще не имеет никакого отношения к восточной кухне. Это приём в функциональном программировании, позволяющий преобразовать функцию, заменив её несколько первых аргументов константными значениями, тем самым создав новую функцию с меньшим количеством аргументов на основе старой. Этот будет удобно применять в случае, когда первые несколько аргументов функции заранее известны, и указывать их при каждом вызове нет необходимости. Для краткости будем называть преобразовываемую функцию каррируемой, а функцию, которая её преобразовывает, каррирующей. Читать далее Каррирование (карринг) в JavaScript

Простая головоломка на JavaScript

brainteaser-jsОднажды, когда я сидел в универе на скучной паре, мне почему-то вспомнилась одна забавная головоломка из квеста «Машинариум». Я давно забыл, как она решается и мне почему-то очень захотелось вспомнить решение. Рисовать ход решения на бумаге мне показалось утомительным, и я решил написать эту головоломку на js. Позднее мне захотелось поделиться этой забавной игрушкой с вами. Головоломка безымянная, но чтобы хоть как-то обозначить, о чём мы будем говорить, я решил назвать её «cтрелки». Читать далее Простая головоломка на JavaScript

Рекурсия. Понятие и примеры

recursion

Для кого эта статья

Эта статья будет полезна новичкам, только начавши своё знакомство с js, но уже знающим, что такое функции и для чего они нужны, что такое область видимости переменных, а также умеющего пользоваться js-консолью. Для понимания некоторых примеров будет не лишним знать, что такое DOM, какие есть функции для работы с ней и что они делают. Также понадобится умение работать с css-свойствами html-елементов. Примеры, не описанные в статье, но присутствующие в архиве с исходными кодами будут понятны только если вы знакомы с canvas API. Читать далее Рекурсия. Понятие и примеры

Читаем файлы, расположенные локально при помощи JavaScript


Возможности, появляющиеся в браузерах, всё более удивляют и восхищают веб-разработчиков. То, что раннее реализовывалось при помощи flash’a или апплетов, сейчас можно написать на чистом js. Одной из таких удивительных возможностей стало возможность чтения файлов, расположенных локально.

Зачем это нужно

Вариантов использования этой, безусловно, полезной возможности превеликое множество:

  • Сжатие (архивация) файлов перед отправкой на сервер.
  • Сжатие (с потерей качества), изменение размера или обрезка при помощи canvas изображения перед отправкой на сервер.
  • Предоставление возможности пользователю самому определить шрифт текста, если файл шрифта расположен у него на компьютере.
  • Можно перед загрузкой на сервер определить MIME тип файла и отфильтровать файлы, который нельзя загружать на сервер. (Например, у вас фотохостинг и вы не хотите, чтобы туда грузили что-то, кроме изображений) Это можно сделать и на сервере, но это отнимет время у пользователя и увеличит нагрузку на сервер.
  • Можно написать приложение, работающее в браузере. Например, графический редактор, или редактор js (html) – кода, в которых будет предусмотрена возможность сохранения данных на стороне клиента.

Читать далее Читаем файлы, расположенные локально при помощи JavaScript

Рисуем эллипс на canvas


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

Рекомендации решившим начать изучать JavaScript

Если вы решили начать изучать JavaScript, то эта статья для вас. Надеюсь, что её прочтение избавит вас в будущем от множества ошибок и сделает его изучения более простым, быстрым и эффективным. В статье рассмотрены популярные ошибки и заблуждения насчёт JavaScript‘a, а так же рекомендации новичкам. Читать далее Рекомендации решившим начать изучать JavaScript

Кнопка «Вверх» с плавной прокруткой страницы на jQuery

Наверняка, на многих сайтах вы видели кнопку «Вверх страницы», по нажатию на которую вы перемещаетесь в самый верх страницы. Сегодня я расскажу вам, как сделать такую кнопку, причем, она будет иметь несколько особенностей: во-первых, она будет появляться при прокрутке страницы вниз, а во-вторых, страница не будет прыгать вверх, как на многих сайтах, а плавно прокручиваться вверх. Чтобы было понятнее, посмотрите демо и мы приступим. Читать далее Кнопка «Вверх» с плавной прокруткой страницы на jQuery