Подскажите пожалуйста в каком направлении смотреть, где с моим опытом будет проще, где будет возможность срезать углы?
Имею 10 лет в телекоме. Знания на уровне CCNP с просроченным CCNP R&S. Cisco, и ему подобное сетевое железо, jun'ы. Linux(RedHat,Debian), Freebsd, на уровне среднего и ниже админа.
Как это будет лучше реализовать, можно ли оптимизировать алгоритм?
1. Найти все jpg в выбранной папке.
2. Для каждого jpg проверить заголовки (могу ошибаться, но они вроде есть в jpg) на целостность (мало ли файл повреждён или файл не является фотографией, а просто файлом с расширением jpg).
3.Информацию о каждом файле (имя и относительный путь, хэш, exif-тэги) записать в csv файл (или что-то подобное).
4.Найти дубликаты и применить фильтры (допустим - должны быть все exif тэги).
5.Скопировать/переместить оставшиеся файлы в заданную структуру папок.
И ещё актуален ли Си как язык программирования в 21 веке, или даже ОС пишут на чем-нибудь повыше?
text="\
1 London Paris |I am the Rock|
2 Moscow Kyiv |I am the Cena|
3 Kharkiv Dnepr |I am the CM Punk|
4 Ottava Amsterdam |I am the Rock|
5 Oslo New-Yourk |I am the Rock|
6 Lviv Varshava |I am the Cena|
7 Berlin Rome |I am the CM Punk|
8 Moscow Oslo |I am the Cena|
9 Kharkiv Kyiv |I am the Brock Lesnar|
"
fsm()
{
awk '{
switch (state) {
case 0:
if (/Rock/) {
out = $0
state = 1
}
break
case 1:
if (/Rock/) {
out = $0;
} else if (/Cena/) {
out = out"\n"$0
state = 2
} else {
out = ""
state = 0
}
break
case 2:
if (/Punk/) {
out = out"\n"$0
print out
out = ""
state = 0
} else {
out = ""
state = 0
}
break
}
}'
}
echo "$text" | fsm
[guest@localhost tmp]$ echo "$text" | fsm
1 London Paris |I am the Rock|
2 Moscow Kyiv |I am the Cena|
3 Kharkiv Dnepr |I am the CM Punk|
5 Oslo New-Yourk |I am the Rock|
6 Lviv Varshava |I am the Cena|
7 Berlin Rome |I am the CM Punk|
[guest@localhost tmp]$
text="\
abc1
abc2
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr1| - |user logged in| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr1| - |user changed password| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr1| - |user logged off| -
def1
def2
Mon, 1 Aug 2012 00:15:00 +xxxx|1.1.1.1|dnepr2| - |user logged in| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr2| - |user logged in| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr2| - |user changed password| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr2| - |user logged off| -
ghi1
ghi2
"
fsm()
{
awk '{
switch (state) {
case 0:
if (/user logged in/) {
out = $0
state = 1
}
break
case 1:
if (/user logged in/) {
out = $0;
} else if (/user changed password/) {
out = out"\n"$0
state = 2
} else {
out = ""
state = 0
}
break
case 2:
if (/user logged off/) {
out = out"\n"$0
print out
out = ""
state = 0
} else {
out = ""
state = 0
}
break
}
}'
}
echo "$text" | fsm
[guest@localhost tmp]$ echo "$text" | fsm
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr1| - |user logged in| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr1| - |user changed password| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr1| - |user logged off| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr2| - |user logged in| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr2| - |user changed password| -
Mon, 1 Aug 2012 00:15:00 +0200|1.1.1.1|dnepr2| - |user logged off| -
[guest@localhost tmp]$
Я не понимаю чем и как отличаются операторы присваения от оператора равенства
int main(int argc, char *argv[])
int main(int argc, char **argv)
Пройдя этот курс в голове по-любому останется хоть какая-то база по С++, но будут ли базовые знания Си? Или всё же Си надо изучать отдельно?
Собственно, имеется динамический массив uint8_t[8], который нужно заменять на переменную uint64_t, введенную пользователем.
Она вроде бы одна из самых популярных, и ее называют самой удобной, универсальной и продвинутой.