−101
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
available_docker_storage() {
avail=$(docker info | grep 'Data Space Available' | cut -d' ' -f'5,6')
# Some Docker drivers don't provide this info
if [ -z "$avail" ]; then
available_disk_space
else
num=$(echo "$avail" | cut -d' ' -f1)
magnitude=1
correction=1
case $avail in
*GB) magnitude=1000000000 ;;
*MB) magnitude=1000000 ;;
*KB) magnitude=1000 ;;
esac
# Prey to Poseidon they don't use scientific notation
exponent=(${num//./ })
exponent=${exponent[1]}
exponent_length=${#exponent}
correction=$((10**exponent_length))
num=$(echo "$num" | tr -d '.')
result=$((magnitude*num))
result=$((result/correction))
echo $result
fi
}
Плавающий питух. bc не установлен. Ничего вообще не установлено. Только баш. Вроде работает.
wvxvw,
27 Ноября 2016
−98
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
#!/bin/bash
docker images | \
grep $1 | \
awk '{ print $1":"$2 }' | \
xargs -I{} docker history --human=false {} | \
grep -P '^[0-9a-f]{12}' | \
sed -r 's/([^ ]+).+\s([^ ]+\s+)$/\1 \2/' | \
sort -u | \
grep -v ' 0' | \
awk '{ print $2 }' | \
xargs | \
sed -e 's/\ /+/g' | \
bc | xargs -I{} echo '({} / (1024.0 * 1024.0))' | bc
Считает общий объем занимаемый всеми имиджами Докера с определенным тагом.
wvxvw,
29 Августа 2016
+2424
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
// Most profiles should run only on one loader (they don't coordinate multiple instances,
// and do not test performance).
// We explicitly specify that some profiles should run on multiple loaders:
singleLoader := true
switch params.Config.Foo.Profile.Name() {
case (*foo_config.ProfileIO).Name(nil):
singleLoader = false
}
if singleLoader {
// Setting TargetLoaders to a single random loader.
}
Вот думаем подарить человеку книжку про судоку, а то творческую натуру негде применить.
wvxvw,
24 Августа 2016
+1514
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
[151] ns-flow-pair-entry(n,c) ::= ns-flow-pair-yaml-key-entry(n,c)
| c-ns-flow-map-empty-key-entry(n,c)
| c-ns-flow-pair-json-key-entry(n,c)
[152] ns-flow-pair-yaml-key-entry(n,c) ::= ns-s-implicit-yaml-key(flow-key)
c-ns-flow-map-separate-value(n,c)
[153] c-ns-flow-pair-json-key-entry(n,c) ::= c-s-implicit-json-key(flow-key)
c-ns-flow-map-adjacent-value(n,c)
[154] ns-s-implicit-yaml-key(c) ::= ns-flow-yaml-node(n/a,c) s-separate-in-line?
/* At most 1024 characters altogether */
[155] c-s-implicit-json-key(c) ::= c-flow-json-node(n/a,c) s-separate-in-line?
/* At most 1024 characters altogether */
If the “?” indicator is omitted, parsing needs to see past the implicit key to recognize it as such. To limit the amount of lookahead required, the “:” indicator must appear at most 1024 Unicode characters beyond the start of the key. In addition, the key is restricted to a single line.
Note that YAML allows arbitrary nodes to be used as keys. In particular, a key may be a sequence or a mapping. Thus, without the above restrictions, practical one-pass parsing would have been impossible to implement.
Столкнулся, значит, с проблемой. ЙАМЛ парсер для Го не может распарсить даже примеры из спецификации.
Заглянул в исходники - ад и погибель. Копипаста сишного кода из libyaml с косметическими изменениями. Функции по 200+ строк с кучей ифов, регулярками и т.п. Решил заглянуть в спецификацию в надежде, что может можно самому как-то... в спецификации - ад и погибель. Копипаста с грамматическими ошибками, и тьма их. Ну а как дошел до этого места, так сразу и понял, что тут уже делать больше нечего.
wvxvw,
19 Августа 2016
−46
- 1
- 2
- 3
- 4
- 5
- 6
- 7
case DEBUG_VAR__SIMPLE_TYPE_BOOL:
b = (bool *)(item->ptr);
if (0 != strncmp(var->var_s, "0", 2) && 0 != strncmp(var->var_s, "1", 2)) {
ERROR("Value of %s is not boolean (%s)", name, var->var_s);
return false;
}
*b = (var->var_s[0] == '0') ? 0 : 1;
Все, что вам нужно знать о формате Protobuf.
Предыстория: нужно используя Протобаф переслать значение которое может быть либо строкой, либо числом, либо логической переменной.
Варианты решения:
1. Создать message с опциональными полями - аналог сишного union.
2. Придумать формат в котором в одно поле будет записываться тип пересылаемого значения, а в другое - неведомая херня, которую потом динамически проверять.
wvxvw,
26 Июня 2016
+5
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
type asynchronizer struct {
payload interface{}
}
func (as *asynchronizer) MarshalJSON() ([]byte, error) {
insert := []byte("\"async\":true,")
if as.payload == nil {
as.payload = struct{}{}
}
raw, err := json.Marshal(as.payload)
if err != nil {
return raw, err
}
if raw[1] == '}' {
insert = insert[:len(insert)-2]
}
return append(append(raw[0:1], insert...), raw[1:]...), nil
}
Чем дальше в лес, тем больше Го напоминает ПХП.
wvxvw,
03 Апреля 2016
−53
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
set +x
for file in ./*.{status,addr2Line,sysctlLog,procLog}
do
if [ -f "./$file" ]
then
echo -e "\n\n \e[1m### Failure info: \e[34m$file\e[0m\e[1m ###\e[0m"
cat ./$file | sed -e 's/^host: \(.*\)/host: \x1b[1m\x1b[44m\1\x1b[0m/' \
-e 's/^\(.*PANIC:\)/\x1b[1m\x1b[31m\1/' \
-e 's/^\(.*Use the following command for more stack info:\)/\x1b[0m\1/'
fi
done
Почти Malbolge
wvxvw,
20 Марта 2016
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
FROM centos:7
RUN yum update -y && yum -y install openssh-server ssh
RUN echo 'root:123456' | chpasswd
RUN passwd -u root
RUN ssh-keygen -A
RUN ssh-keygen -t rsa -b 4096 -C "[email protected]" -N "" -f /root/.ssh/id_rsa
RUN cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
RUN chmod 600 /root/.ssh/id_rsa.pub
ADD ./ssh_config /etc/ssh/ssh_config
ADD ./sshd_config /etc/ssh/sshd_config
CMD ["/bin/sh", "-c", "{ while :; do /usr/sbin/sshd -eD ; done }"]
docker build --name trolleybus-is-hleba .
Вот так вот.
wvxvw,
16 Марта 2016
−57
- 1
yum check | grep 'duplicate with' | awk '{ print $6 }' | xargs -I{} yum -y remove {}
Брат умер.
wvxvw,
10 Января 2016
−3
- 1
- 2
- 3
- 4
- 5
var api = angular.module('GithubApi', []);
api.controller('GithubStatus', function ($scope, $http) {
$http.get('/api.json')
.success(function (response) { $scope.api = response; });
});
Пейсатели ж.скрипт фреймоврков не перестают радовать. Код несколько упрощен, но суть должна быть очевидна каждому: переменная api будет затерта как только она будет создана строкой типа "[object Object]" потому что в $scope есть поле с таким же значением.
wvxvw,
09 Ноября 2015