Из последнего, что делал и за что не заплатили. Креслеца.

Бывают такие рекурсивные системы, вроде горожей в ммо, подборки мебели и тому подобного. Меня не так давно просили сделать одну такую для кресел.

В коде для динамической подгрузки и расстановки используется паттерн лства. Каждый элемент кресла является производным от общего класса, при инстансиации становится на заданные заранее места обозначенные маркером. При таком подходе можно не только динамически компановать сложные системы с кучей дочерних элементов, но и динамически их подгружать.

если кому интересно https://hikke.net/chair.html

Что делать если среди лайкнувших пост хочется выбрать определенную категорию людей, а поиска по лайкнувшим, втентакль не предоставляет..

порылся в первый раз за последние несколько лет в vk.api и нашел решение этой проблемы. методы api используемые для этой цели:

получение идентификатора группы по её дисплейнейму

https://vk.com/dev/groups.getById

получение списка постов по идентификатору группы
https://vk.com/dev/wall.get

получение списка идентификаторов пользователей лайкнувших пост
https://vk.com/dev/likes.getList

получение выборочной информации о пользователях
https://vk.com/dev/users.get

с ресурсами определились. теперь лезим в консоль разработчика VK и создаем две функции. первая для получения идентификаторов постов

 

var a = API.groups.getById({"group_id":Args.groupName});
var group_id= a@.id[0];
var count= Args.postcount;
var offset = Args.offset;
var posts = API.wall.get({"owner_id":-group_id, "count":count, "offset":offset});

var i = count;
var OUT=[];

OUT.push({"groupID": group_id});
while (i>=0) 
{ 
    OUT.push({"id":posts.items[i].id, "text": posts.items[i].text});
    i=i-1;
};
return OUT;
//return posts.items[0].id;//@.id, posts.items@.text];
и воторая для фильтрации их по заданым критериям. в случае ниже по полу и городу
var group_id= Args.group_id;
var post_id = Args.post_id;
var offset = Args.offset;
var count = Args.count;
var sex = Args.sex;
var sity = Args.city;
var likes = API.likes.getList({"type":"post", 
"owner_id":group_id,
"item_id":post_id,
"extended":0,
"offset":offset,
"count":count
}).items;

var users =API.users.get({"user_ids":likes,"fields":"city, sex"});
var OUT=[];
var i=0;
while(i	< count)
{
    if(users[i].sex==1 )
    {
        if(users[i].city.title == Args.city)
        {
            OUT.push(users[i]);
        }
    }
    i=i+1;
}
return OUT;

Отлично. Молодец. Теперь можно пейсать и предлагать забухать

Достался мне небольшой гавнопроект по нейронкам. Что-бы не терять времени бычтренько запилю тут основные моменты.

входные данные имеют примерно такой вид и структуру

ID, DateTime, Data1, Data2

Данные снимаются каждые пять минут, и в результате выходит файлы, в котором куча разных идшников с графиками двух параметров переменной длинны.
Ессно в таком виде данные на вход нейронки мы падать не можем. поэтому используем интерполяцию. я использую 10 точек для интерполяции и передачи времени от начала эксперемента средних значений для точки интерполяции параметра1 и минимальных, максимальных средних значений для параметра два для каждой точки интерполяции преобразуя рав дату в дата ассет вида. Вообще можно использовать не только минимальные, максимальные но и всякого рода дисперсии и отклонения в зависимости от задачи

TargetCalssNUM,
Dapa1_point1 .. Data1_point_10,
Data2_point1 .. Data2_Point10, 
Data2min_point1 .. Data2min_point10, 
Data2max_point1 .. Data2max_point10,
Time1 .. Time10

кусок гавнокода решающий задачу создания датасета из рав данных

Читать далее

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

Вот напился я как-то до чего-то подобного, и решил бросать. Если от алкоты нет фана, то мне нет смысла пить алкоту.

Читать далее

инициализация контракта

mkdir gavno_contract
cd gavno_contract
truffle init

создаем код GavnoContract.sol

pragma solidity ^0.4.8;

contract GavnoContract{
  uint256 someGavno;

function addGavnoToContract() public payeable {
    someGavno+= msg.value;
  }
}

и качуем /migrations/2_deploy_contract.js, где добавляем имя контракта

var GavnoContract= artifacts.require("./GavnoContract.sol");

module.exports = function(deployer) {
  deployer.deploy(GavnoContract);
};

топаем в /tests, где создаем юниттест

var GavnoContract = artifacts.require("./GavnoContract.sol");
let instance;

contract("GavnoContract:test", async (accounts) => {

  it("let's create this shit", async function () {
    instance = await GavnoContract.new({from: accounts[1]})
    await instance.addGavnoToContract({from: accounts[3], value: 100000000000000});
    await instance.addGavnoToContract({from: accounts[4], value: 100000000000000})
    let result1 = await instance.someGavno.call();

   // console.log(result1.toNumber());
    assert.isTrue(resultNum != 200000000000000);
  });
});

дальше как обычно

truffle compile
truffle migrate
truffle test

 

популярно эт гавно в последнее время, чет. и раз уж за него сиравно не заплатили. пусть буит тут. пользуйте если кому надо.

 

pragma solidity ^0.4.17;

contract Lottery{
    address public manager;
    address[] public players;
    address[] public winners;
    uint pot;


    constructor () public {
        manager = msg.sender;
    }

    function enter() public payable{
        require(msg.value > .01 ether);
        pot+=msg.value;
        players.push(msg.sender);
    }

     function random(uint seed) public view returns (uint){
        uint arg=  uint(blockhash(block.number-1)) & 0xfff;
        return uint( arg | now) + seed;
    }

    function pickWinner() public payable {
        uint winningAmount = pot/10;
        address winner;
        uint i=0;
        //delete new_players;
        
       
        
        while(i < players.length){
            winner = players[random(i+1) % players.length];
            
            for(uint j=0; j< winners.length ;j++)
            {
                if(winner == winners[j] )
                {
                    continue;
                }
            }
            
            winner.transfer(winningAmount); 
            winners.push(players[i]);
            i=i+1;
            return;
        } 
    }
    

    modifier restricted() {
        require(msg.sender == manager);
        _;
    }

    function getPlayers() public view returns(address[]) {
        return players;
    }
}

Читать далее

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

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

и кубизм через киннект

 

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