L
Вот пытаюсь ужимать как-то все
kås
Тогда оптимизация памяти и доступа то что нужно. См видео
kås
Может у вас там в пхп лишние символы или ещё что
Vasily
но по факту там оптимайзить можно всякие bool-ы
Fastumkruk
Fastumkruk
hash_hmac('sha256', block, key)
$m_shop = '';
$m_orderid = '1';
$m_amount = number_format(100, 2, '.', '');
$m_curr = 'USD';
$m_desc = base64_encode('Test');
$m_key = 'Ваш секретный ключ';
$arHash = array(
$m_shop,
$m_orderid,
$m_amount,
$m_curr,
$m_desc
);
/*
$arParams = array(
'success_url' => 'http:///new_success_url',
//'fail_url' => 'http:///new_fail_url',
//'status_url' => 'http:///new_status_url',
'reference' => array(
'var1' => '1',
//'var2' => '2',
//'var3' => '3',
//'var4' => '4',
//'var5' => '5',
),
);
$key = md5(''.$m_orderid);
$m_params = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, json_encode($arParams), MCRYPT_MODE_ECB)));
$arHash[] = $m_params;
*/
$arHash[] = $m_key;
$sign = strtoupper(hash('sha256', implode(':', $arHash)));
?>
<form method="post" action="https://payeer.com/merchant/">
<input type="hidden" name="m_shop" value="<?=$m_shop?>">
<input type="hidden" name="m_orderid" value="<?=$m_orderid?>">
<input type="hidden" name="m_amount" value="<?=$m_amount?>">
<input type="hidden" name="m_curr" value="<?=$m_curr?>">
<input type="hidden" name="m_desc" value="<?=$m_desc?>">
<input type="hidden" name="m_sign" value="<?=$sign?>">
<?php /*
<input type="hidden" name="form[ps]" value="2609">
<input type="hidden" name="form[curr[2609]]" value="USD">
*/ ?>
<?php /*
<input type="hidden" name="m_params" value="<?=$m_params?>">
*/ ?>
<input type="submit" name="m_process" value="send" />
</form>
d
Fastumkruk
hash_hmac('sha256', block, key)
h := sha256.New()
h.Write([]byte(mas[0] + mas[1] + mas[2] + mas[3] + mas[4] + mas[5]))
hash := BytesToString(h.Sum(nil))
fmt.Printf("%x", hash)
Я делаю так, выводиться. Но не соотвествует с тем что выходит на пхп
Sebor▂▅▇█▓▒░
Fastumkruk
Fastumkruk
@Civiloid
Vladimir
Vladimir
и что в mas[0] и т.п.?
Fastumkruk
и что в mas[0] и т.п.?
Fastumkruk:
$m_shop = '';
$m_orderid = '1';
$m_amount = number_format(100, 2, '.', '');
$m_curr = 'USD';
$m_desc = base64_encode('Test');
$m_key = 'Ваш секретный ключ';
$arHash = array(
$m_shop,
$m_orderid,
$m_amount,
$m_curr,
$m_desc
);
/*
$arParams = array(
'success_url' => 'http:///new_success_url',
//'fail_url' => 'http:///new_fail_url',
//'status_url' => 'http:///new_status_url',
'reference' => array(
'var1' => '1',
//'var2' => '2',
//'var3' => '3',
//'var4' => '4',
//'var5' => '5',
),
);
$key = md5(''.$m_orderid);
$m_params = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, json_encode($arParams), MCRYPT_MODE_ECB)));
$arHash[] = $m_params;
*/
$arHash[] = $m_key;
$sign = strtoupper(hash('sha256', implode(':', $arHash)));
?>
<form method="post" action="https://payeer.com/merchant/">
<input type="hidden" name="m_shop" value="<?=$m_shop?>">
<input type="hidden" name="m_orderid" value="<?=$m_orderid?>">
<input type="hidden" name="m_amount" value="<?=$m_amount?>">
<input type="hidden" name="m_curr" value="<?=$m_curr?>">
<input type="hidden" name="m_desc" value="<?=$m_desc?>">
<input type="hidden" name="m_sign" value="<?=$sign?>">
<?php /*
<input type="hidden" name="form[ps]" value="2609">
<input type="hidden" name="form[curr[2609]]" value="USD">
*/ ?>
<?php /*
<input type="hidden" name="m_params" value="<?=$m_params?>">
*/ ?>
<input type="submit" name="m_process" value="send" />
</form>
То что закоментированно, нас не интересует
Vladimir
@Fastumkruk
~/go/src/test# php ./test.php
string(64) "5862d9cdf85856749ea2f07a0b44ce85ab1e544ceaf8e32906acdea02cd4c813"
root@doroboneko:~/go/src/test# go run ./main.go
5862d9cdf85856749ea2f07a0b44ce85ab1e544ceaf8e32906acdea02cd4c813
https://bpaste.net/show/78ce63148960
Vladimir
все одинаково считается
Vladimir
@Fastumkruk https://golang.org/pkg/strings/#Join
Fastumkruk
все одинаково считается
https://play.golang.org/p/4QrnpSLkpGQ
Соответсвует ли мой код на ГО, коду который я кинул выше на пхп? Если ошибаюсь, подскажите где.
Oleh
Привет
мне нужна подсказка
я делаю игру
и там есть особи
я им сделал вот такой интерфейс
type InhabitInterface interface {
NextStep() (x, y int)
IsBeget() (bool, utils.MoveVect, InhabitInterface)
IsGoneAway() bool
Force() int
GotHit(from InhabitInterface)
GetPix() int
Draw(t pixel.Target, matrix pixel.Matrix)
}
друг говорит что лутше вынести метод Draw в другое место и инкапсулировать от структуры с логикой
стоит ли? или лутше все в одном месте сделать?
Oleh
Что там по паттернам?
Pawel
Alex
если есть только такие функции, в которых используются все методы, но нет таких в которых используется какой-то один (и появление невозможно), то это ок
Alex
взять сортировку например из стандартной библиотеки
Pawel
Обычно в Го пишется функция, использующая интерфейс, и лишь потом при необходимости проводится рефакторинг, заключающийся в выносе отдельного интерфейса
Pawel
Вот этот код с жирным интерфесом - это пример худщих практик из джавы
Alex
это да, но человек скорее всего из "очень ооп" языка
L
L
И где можно про это почитать?
Pawel
не понял вопрос про чем обусловлено.
почитать можно в доброй книге по Го Донавана Кернигана.
Pawel
Метод интерфейса - это контракт типа. Чем сложнее контракт, тем больше трудностей с его реализацией и использованием. Соотв. 1 метод при прочих равных - это намного лучше 2
Pawel
У меня в программах на Го сперва пяовляются типы, потом уже я смотрю на их общие методы, и только потом при рефакторинг формулирую абстракции их общего поведения в виде интерфейсов. Изначально же в программе никаких интерфейсов нет, ибо не нужно
Oleh
Pawel
Изначально думать об особи игрового поля как об объекте с определённым набором методов - это не правильно имхо.
Oleh
Вопрос был такой
Нужно ли розделять в отдельные структуры логику особи и функции которые отвечают за гуи
Ну и инкапсулировать одно в другое?
Oleh
Oleh
Duck typing
Oleh
Же
Oleh
Кожно сделать інтерфейс который собирает в себе другие интерфейсы
Pawel
Pawel
нет смысла пихать всю логику в один тип
Pawel
чем меньше ответственности у класса, тем проще его тетстить, дебажить и понять
Oleh
Класов нету:)
Oleh
Но ок
Pawel
под классами я имею ввиду гошные struct, ООП в го делается через них
Pawel
Вообще идея изначально всё делать на объектах класса - она плохая
Cat
Pawel
Cat
вообще, не давайте вредных советов, даже в рамках троллинга
Pawel
ы?
Cat
> У вас плохой интерфейс. Обычно в Го интерфейс - это 1 метод. Три - это уже овердофига.
> Обычно в Го пишется функция, использующая интерфейс, и лишь потом при необходимости проводится рефакторинг, заключающийся в выносе отдельного интерфейса
> Вообще идея изначально всё делать на объектах класса - она плохая
говорю, жир из монитора потёк
Pawel
по моему у вас в голове что-то протело и забрызгало экран
L
Я считаю не нужно гнаться именно за соблюдением 1 интерфейс - 1 метод. Это похоже больше на утопию, когда у тебя в коде сотня интерфейсов. В чем сложность поддерживать интерфейс с 2-3 методами? В чем не безопасность такого решения? Да, когда у тебя много мелких, тебе их легче объединять в композицию, но имхо, когда интерфейс логически не разделим, нет смысла его дробить.
Pawel
а где я говорил что надо за этим гнаться? Гнаться надо за тем, чтобы не было оверинжиниринга с бесполезно переусложнёнными абстракциями
Slava
В случае с игрой, где много энтити - лучше все через композицию делать
Pawel
я не вижк чтобы методы из преведенного интерфейса были как-то связаны. И когда сперва появляется такой вот интерфейс, а потом к нему пишут реализацию - это такой классический джавоебизм, с которым я борюсь у себя в организации уже много лет
Slava
Поддержу Павла в этом
Pawel
спасибо)
Oleh
Но если я использую в игре
Oleh
Структуру которая только там используется, то не очень вижу смысл ее дробить
Slava
Структура - это имплементация уже
V
Один интерфейс - один метод... сразу на ум приходит file из http.
kås
Ридер же
Alexander
На счет интерфейсов, вот по этому шаблону вот такой результат
Alexander
https://play.golang.org/p/9POLvsjDF6
Alexander
BenchmarkDirect-8 2000000000 1.75 ns/op
BenchmarkInterface-8 500000000 3.85 ns/op
BenchmarkInterfaceUnknown-8 100000000 19.8 ns/op
Alexander
тут прост выше задавал вопрос на тему быстртдействия
Alexander
Ребят, написал админу, но вдруг он просто бот, а не человечек
Alexander
Нашел такое сообщение t.me/gogolang/89318
Alexander
Вообще я больше по php, но последние полгода активно изучаю/пишу на Go
можно ли получить пример тестового задания? чтобы хоть понимать что на рынке от гошников требуется?
Alexander
> Вообще я больше по php
мне теперь в этом чате никогда не будут отвечать?
Alexander
Kirill
Народ, у меня объявление:
Каждый месяц я буду разыгрывать по от $50 до $100 за:
- самую популярную статью об https://github.com/gramework/gramework на таких платформах, как medium, habr.com, digitalocean (если вы хотите опубликовать статью на другой платформе вам нужно написать мне, чтобы я сначала проверил, можно ли автоматически проверить всё нужное для нахождения самой популярной статьи). Автор самой популярной статьи месяца получит деньги. ВНИМАНИЕ: статьи, которые просто копируют примеры из ридми проекта и не дают новых знаний о gramework читателям, не участвуют в акции.
- самого активного контрибьютора. Я добавлю специальные баллы в названия тикетов и контрибьютор, собравший наибольшее количество баллов (при этом не меньше 4), получит деньги. Вы можете создавать новые тикеты с вашими пожеланиями, я буду ставить баллы на них. Я сам не участвую в этом рейтинге и не считаю свои же баллы.
Slava
Ровно то же, что и от других программистов требуется