SekraSoft | Официальный сайт
Забавные мелочи: простенькие скрипты и полезные безделушки, которые вы, быть может и сами сотню раз писали, но сейчас на это нет времени.

Таблица символов

Настраиваемая таблица символов позволяет просмотреть и скопировать код символа в формате &#число; из любого диапазона, который Вы пожелаете, в отличие от статических таблиц, которые легко можно найти в сети.

Секундомер

Ещё один способ измерить время браузером.

Консолька

Я подумал: можно ли взять и написать командную строку на JavaScript. Оказалось, всё можно. Такая вот фигня.

Модули C

Модуль alloc реализует выделялку перемещаемой памяти.

Brainfuck Compiler

Все если не любят Brainfuck, то уважают его. Данный скрипт, пользуясь динамичностью JavaScript, позволяет Вам исполнять код на языке Brainfuck, пользуясь оптимизациями исполнения, заложенными в Ваш браузер.

Чудо-фрактал

И фрактал тут... Так вышло. А началось всё с того, что !(i&(i-1)) - признак того, что i = 0, 1, 2, 4, 8, 16, ..., 2n

Изменения текста

Это просто, понятно и всем известно.

Упоротая экспонента

Вычисление экспоненты самым безумным путём, который ещё можно себе позволить.

Парсер

Демонстрационная страничка парсера. Пользователь задаёт грамматику в РБНФ-подобном виде, текст для парсинга и может посмотреть на АСД.

Язык для обработки строк

Демонстрационная страничка языка для обработки строк.

Бесконечные списки и ФВП в JS

Демонстрационная страничка с возможностью работы с бесконечными списками и ФВП в JS и ссылка на исходники.

Псевдосинхронные JS-функции

Модуль позволяет записывать вызовы асинхронных функций в синхронном стиле.
// Есть асинхронная функция, которую придётся часто использовать
function asyncSum(arg1, arg2, callback){
  setTimeout(function(){
    callback(arg1+arg2);
  }, 1000);
}

// Хочется написать сложение 5 чисел, что выглядит как:
function asyncSum5(a, b, c, d, e, callback){
  asyncSum(a, b, function(sum1){
    asyncSum(c, d, function(sum2){
      asyncSum(sum1, sum2, function(sum3){
        asyncSum(sum3, e, callback);
      });
    });
  });
}

// js-sync позволяет записать всё это в виде:
var asyncSum5 = sync(function(a, b, c, d, e, callback){
  asyncSum(a, b, sync.to(sum1));
  asyncSum(c, d, sync.to(sum2));
  asyncSum(sum1, sum2, sync.to(sum3));
  asyncSum(sum3, e, callback);
});
Внимание! Не используйте js-sync, если не понимаете, что делает этот модуль.
Имеются противопоказания:
  1. функция, переданная в sync() должна иметь переносы строки хотя бы между функциями, использующими sync.to (см. реализацию)
  2. на одной строке должно быть ровно одно упоминание sync.to() (см. реализацию)
  3. если callback - без аргументов, sync.to всё равно записывается со скобками
  4. функция, созданная с помощью sync может иметь иной лексический контекст,
    для борьбы с этим можно попытаться воспользоваться eval(sync.text(func)) вместо sync(func)
  5. sync использует eval, что может быть медленным в некоторых случаях
  6. строки, следующие за строкой sync.to, не должны быть в каких либо блоках, кроме самой функции (см. реализацию)
          sync(function a(){
            while(y){
              something(sync.to(a));
              --y;
              x += a;  // в блоке while. нельзя!
            }
          });
    
          sync(function a(){
            while(y){
              something(sync.to(a)); --y; } // блок while завершён
              x += a;  // вне блока while, всё хорошо
          });
        
  7.     // нельзя переписать это с использованием sync.to из-за вызова do_something(3)
        function a(){
          do_something(1);
          something(function(){
            do_something(2);
          });
          do_something(3);
        }
        
        var a = sync(function(){
          do_something(1);
          something(sync.to());
          do_something(2);
          // где вызвать do_something(3) ???
        });
        
        // можно только так
        var a = sync(function(){
          do_something(1);
          something(function(){
            do_something(2);
          });
          do_something(3);
        });
      
4sin.html

Убийца моска

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