Category: JavaScript

0

Функция обнаружения коллизий объектов (JavaScript)

Дан­ная функ­ция поз­во­ля­ет опре­де­лить пере­се­че­ние (кол­ли­цию) двух объ­ек­тов (сфер / окружностей):

function $_collision(a, b) {
    var c = a.x - b.x,
        d = a.y - b.y,
        e = a.r + b.r;
    return c * c + d * d <= e * e
}
 
$_collision({
    x: 150,
    y: 200,
    r: 100
}, {
    x: 100,
    y: 150,
    r: 200
}); // true

circle collisions

0

функция расширения объекта (JavaScript)

function $_extend(o, a, y) {
    for (y in a) o[y] = a[y];
    return o
}
 
var obj1 = {a: 1, b: 2, c: 3};
var obj2 = {x: 'a', y: 'b', z: 'c'};
var new_obj = $_extend(obj1, obj2);
console.log(new_obj); // {a: 1, b: 2, c: 3, x: 'a', y: 'b', z: 'c'}
0

Faster Math.abs()

Более быст­рый ана­лог Math.abs() в JavaScript:

function abs(n) {
    return n < 0 ? -n : n
}
 
abs(-10); // 10

P.S.: При­ве­ден­ный выше метод целе­со­браз­но исполь­зо­вать в очень боль­ших цик­лах и (конеч­но же) луч­ше делать это не через вызов функ­ции abs(), а поме­стив эти вычис­ле­ния пря­ми­ком в тело цик­ла… Да Вы и сами зна­е­те :D

Хотя, более кра­си­вым (но не таким быст­рым, как -n) мето­дом всё рав­но оста­ёт­ся исполь­зо­ва­ние натив­ной функ­ции Math.abs, сле­ду­ю­щим образом:

var abs = Math.abs; // создаем локальную ссылку на нативную функцию Math.abs
abs(-10); // 10

P.S.: При­ве­ден­ный выше метод целе­со­браз­но исполь­зо­вать в боль­ших циклах.

0

soundcloud dl+

Нач­ну с того, что сам я не явля­юсь посто­ян­ным поль­зо­ва­те­лем soundcloud, но тут уви­дел пост дядь Миши с ссыл­кой на его userscript (soundcloud dl) и решил его “про­сто отрефакторить”…

По-нача­лу, я испра­вил регу­ляр­ные выра­же­ния. Сде­лал гене­ри­ва­ние ссыл­ки через jQuery (коли он там есть). Пере­ста­вил ссыл­ку в дру­гие место что­бы не раз­дви­гать кон­тент почем зря. Убрал ненуж­ный код и ушел гулять… ;) Но пар­синг все­го кон­тен­та стра­ни­цы через регу­ляр­ное выра­же­ние с целью полу­чить нуж­ные дан­ные и после­ду­ю­щий eval этих дан­ных не давал мне покоя. При­дя с ноч­ной про­гул­ки я решил, что будет луч­ше пере­пи­сать весь код с нуля.

В резуль­та­те полу­чил­ся вот такой userscript/код (soundcloud dl+)

P.S.: Скрипт добав­ля­ет ссыл­ку на ска­чи­ва­ние пре­вью вер­сии тре­ка. Скры­ва­ет “дурац­кие” комментарии.

0

моддинг soundcloud

было дело, воз­ник­ла как-то потреб­ность ска­чи­вать пре­вьюш­ки с саунд­кла­уда, напи­сал для это­го про­стень­кий userjs, что было делом несложным.
намед­ни пере­ра­бо­тал слег­ка это дело и выло­жил нако­нец на userscripts.org.

плю­сом ко все­му напи­сал толь­ко что еще один) пря­чет назой­ли­вые timed комменты.

enjoy!