Blog head img
Выписка по java concurrency (dude 2018-02-17 20:09:13 Программирование)

1) Языковые коснтрукции: synchronized, volatile

2) Класс Object wait, notify(); notifyAll();

3) Блокировки RentrantLock (ReentrantReadWriteLock.ReadLockReentrantReadWriteLock.WriteLock) [посмотреть ещё]

4) Атомарные типы AtomicLong,AtomicReference

5) Коллекции: HashTable, Collections.synchronizedMap... , ConcurrentMap [посмотреть ещё]

6) Future интерфейс

7) ExecutorPool

[посмотреть ещё]

Хакаю музыку ВК (dude 2017-11-23 00:21:16 Общее)


href="/audios75615781"


<li id="l_aud" class=""><a href="/audios75615781" onclick="return nav.go(this, event, {noback: true, params: {_ref: 'left_nav'}});" class="left_row">


1) ссылка на страницу $('#l_aud > a').getAttribute('href')
с идентификатором для аудиозаписей

2) запрос на получение данных плейлиста
POST: https://vk.com/al_audio.php?act=section&al=1&is_layer=0&owner_id=75615781&section=all



начало json с данными о треках

{
"playlistData": {
"type": "playlist",
"ownerId": 75615781,
"id": -1,
"isOfficial": 0,
"title": "Музыка XXXXX",
"description": "",
"rawDescription": "",
"authorLine": "<a href="/XXXX " class="mem_link">XXXX</a>",
"authorHref": "/elduderino",
"authorName": "Dude Dude",
"infoLine1": "533 аудиозаписи",
"infoLine2": "0 прослушиваний<span class="dvd"></span>обновлён 15 ноя в 23:29",
"lastUpdated": 1510777745,
"listens": 0,
"coverUrl": "",
"editHash": "",
"isFollowed": false,
"followHash": "",
"accessHash": "",
"addClasses": "",
"gridCovers": "",
"list": [
[
456239228,
75615781,
"",
"All In Your Head",
"South Park The Stick Of Truth",
421,
0,
0,
"",
0,
50,
"",
"[]",
"1916c896caeb6d6597/95e2c76f4d40f0e065/c1a2d4c8c8ba0cdbf3/6cbf31cf0ae269ea87/",
"",
[]
],
[
456239227,
75615781,
"",
"U-Stor-It Storage Fascility Music Theme",
"South Park: The Stick of Truth",
924,
0,
0,
"",
0,
2,
"",
"[]",
"916f9a22c58b5f258c/c1b0d6b88389e9c086/6c7928602b18738319/54ff0751bdaabcf661/",
"",
[]
],
[
456239226,
75615781,
"",
"Blame Canada (8-Bit) World Music Theme",
"South Park&#1475; The Stick of Truth",
1223,
0,
0,
"",
0,
18,
"",
"[]",
"4fbd9e646b73b7a68f/f40b41365d5d1961ea/9e68df566400899f8e/bb5bc2d570e43b5478/",
"",
[]
],


3) пока не ясно....


Итоговая прямая ссылка на МП3
https://psv4.userapi.com/c611120/u293141396/audios/6e198ee6d7af.mp3

из данных:

  456239228,
75615781,
"",
"All In Your Head",
"South Park The Stick Of Truth",
421,
0,
0,
"",
0,
50,
"",
"[]",
"1916c896caeb6d6597/95e2c76f4d40f0e065/c1a2d4c8c8ba0cdbf3/6cbf31cf0ae269ea87/",
"",
[]

Это похоже на 4 хэша операций

1916c896caeb6d6597/95e2c76f4d40f0e065/c1a2d4c8c8ba0cdbf3/6cbf31cf0ae269ea87
addHash = 1916c896caeb6d6597 (добавл новой записи к себе)

editHash = 95e2c76f4d40f0e065 (restore_audio)
actionHash = c1a2d4c8c8ba0cdbf3 (анмут и некотрое другое)
deletehash = 6cbf31cf0ae269ea87 (удаление)

ссылку похоже не дают


Похоже, что из ссылки вида:

https://vk.com/mp3/audio_api_unavailable.mp3?extra=wxfHEfjRBwvjmhqVneqTmZfYz2HUCgqZpZfrquj2vOLlDhLFwJD1m2fUruvJB3q2vKPgxZzFsLDRndbzC18ZqtjZtZv0Chi3Bte2y241mI1LEMrLtxzcnhPvnuS1vfvHyMnOsNHWnMvTDwfhtJnYEtiVoJv3rxCZCeSWl1fxlNnWEdrtvvPhEdeTyOvRwtbqoufll2jTlKzKluTcnNG4zO56mg83DgOUyNbqmgSTvxHVEwz6Dde9B3rUtKTZqs1eDJzNCG#AqS2mJi

в функции audioplayer.js

}, 180: function (t, e) {
"use strict"; ////и тд, до конца файла обфусцированный код со срокой var r = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/=", l = {

Создаётся ссылка вида

"https://cs1-70v4.vk-cdn.net/p5/7f6e61d354a615.mp3?extra=oUZsn51ry2d0073aWmIDu-rEhx33woNAeKpG6mGc_kpbQ_DSPB2yJr0PAEqU4zpmxVk-2cJxsWx6Nw1oBKK-xKUgQz08_KTgB4bN-W9OJR_0ZIKFzMnEttuyYU6taFvAomkYYgbE3A5z"

где "https://cs1-70v4.vk-cdn.net/p5/7f6e61d354a615.mp3 - нормальная ссылка на mp3

Вид ссылки (https://psv4.userapi.com/c611120/u293141396/audios/a6b8f06a3c80.mp3) зависит от сервера, где лежит mp3


//это не нужный хвост (или что в нём закодировано...)

?extra=JzNmNv6u95F3vWiOw3pnybTqasj6oNYcWP-tXFGyDWzti-NJJA-0WpM6-ytQCpDXnyVDnoV_JqIz-ccvM3G_FFoHzIFrn3mw6lRMlnKlQfet1tOL9eNhVV0H7wPXN20Tf4WYghFJSwc

blame-canada (dude 2017-11-18 00:09:46 Общее)

https://pianokafe.com/

sadsad



https://solmire.com/midi-info/1308100/32381-blame-canada-mid.html

ACID + SOLID = Немного теории (dude 2017-11-14 06:20:18 Программирование)

1) ACID  

Требования , которые предъявляются СУБД (как транзакционной системе) по обеспечению целостности данных.

Atomicity - минимальная операция (транзакция)

Consistency - согласованность. Связанные данные в разных таблицах/колонках  должны изменяться взаимозависимо. В БД реализуется транзакицями. Семнтическая связь контролируется программистом.

Isolation - параллельные транзакции не влияют на результат друг друга.

Уровни изоляций:

    Read Uncommitted - Allows dirty reads. Транзакции чтения не блокируются. Транзакции изменения - блокируются друг другом. 

    Read Committed - Does not allow dirty reads. Либо Транзакции Чтения/Записи блокируют друг друга, либо СУБД отслеживает версии данных

    Repeatable read -  If a row is read twice in the same transaciton, result will always be the same. Читающая транзакция блокирует данные для чтения, многократно считанные строки будут одинаковыми.

    Serializable - Performs all transactions in a sequence. Полная изоляция транзакций друг от друга.

Durability - проблемы на нижнем уровне (железо, ОС) не влияют на свойства транзакции. В случае проблем транзакция должна быть rollback.

2) SOLID 

(подробно здесь: http://blog.byndyu.ru/p/blog-page.html)

Single responsibility - объект имеет одно предназначение (ответственность) и инкапсулирует её в классе.

чем меньше в нём ответственности тем реже его надо будет менять.

В идеале - должно быть не более одной причины для изменения класса

Open-closed - проектировать класс такими образом, чтобы его можно было легко использовать (расширять)

без изменения самого класса. На деле реализуется через реализацию интерфейсов и IoC.

Liskov substitution - дочерние классы могут быть заменены базовыми классами.(не изменяют логики базовых классов)

Interface segregation - Толстые интерфейсы необходимо разделять на маленькие и специфические. Чтобы наследники (клиенты) не содержали кучу ненужного функционала

Dependency inversion

(подробно здесь: http://sergeyteplyakov.blogspot.ru/2014/11/di-vs-dip-vs-ioc.html)

IOC - Inversion of Control - общее понятие. Говорится о том , что фремворк вызввает определенные точки лоступа у нашей библиотеки

DI - Dependency Injection - Внедрение зависимостей - механизм передачи классу его зависимостей (обхектов,к оторые он использует). Передаются рализации интерфейсов через конструктор, метод или проперти

DIP - Dependency Inversion Principle - это принцип проектирования, который говорит, что классы должны зависеть от высокоуровневых абстракций. Это значит, что зависимости с более высокоуровневыми классами надо реализовывать через Внедрение зависимостей (реализация интерфейса). Реализация низкоуровневых объектов может быть задана явно (ArrayList и Hashmap например)

test (dude 2017-10-26 21:24:09 Общее)

test

https://www.youtube.com/watch?v=x59f9A1l0ao&list=PLAFD5B210501A00AB

Самоучитель игры на фортепиано, Зимина О.П., Мохель Л.В.

http://www.klex.ru/i5y

про теорию музыки (dude 2017-10-18 19:23:02 Общее)

про теорию музыки

https://www.youtube.com/watch?v=dlCUvz6V_QA&feature=youtu.be

митап (dude 2017-10-13 20:12:53 Общее)

митап

https://www.meetup.com/progmsk/events/244168046/?rv=ea1&_af=event&_af_eid=244168046&https=on

ODFToolkit (dude 2017-09-13 21:27:17 Программирование)

Вот интересно:

У org.odftoolkit.simple.style.Font  не работает метод setSize у уже существующх стилей.
При добавлении строк в таблицу , криво отрабатывают методы  appendRows и insertRows


Было  бы здорово как то это поправить и закинуть в апач репозиторий.

сайт с рецептами (dude 2017-09-08 21:45:31 Еда)

http://andychef.ru/recipes/cheese-mango/