kouprianov: (Default)

Это -- мой личный дневник.
Мнения, которые я высказываю на его страницах, могут не совпадать с позицией организаций, в которых я работаю. Подзамочных записей не пишу, поэтому «френдование» никаких особых привилегий не сулит.

See also | См. также

Approximate crosspost at: http://kouprianov.livejournal.com/265.html

kouprianov: (Default)

Руководства / Manuals

Статьи / Papers

Эссе / Essays

Рецензии / Book reviews

Презентации к докладам / Presentations

kouprianov: (Default)
Потом, возможно, откомментирую подробнее, но суть такая: (1) ищем, куда примонтирована SD карта; (2) используем ddrescue для создания image карты на диске для backup'а (или в любом месте, где вы решите сделать bckup; (3) монтируем получившийся image в специально для этого созданный ad hoc mountpoint (я назвал /mnt/sdcardrescue/); (4) смотрим чем угодно, например, GUI навигатором; (5) Как все закончится, отмонтируем.

username@username-Latitude-3460:~$ ls -l /media/username/
total 296
drwx------ 2 root  root    4096 сен 10  2021 'Elements SE'
drwx------ 2 root  root    4096 сен 10  2021 'Elements SE1'
drwxr-xr-x 6 username username  32768 янв  1  1970 'NIKON D90'
drwxr-xr-x 7 username username 131072 июн  8 03:39  T7

username@username-Latitude-3460:~$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 116,8M  1 loop /snap/core/14946
<...>
loop39        7:39   0  73,9M  1 loop /snap/core22/750
sda           8:0    0 447,1G  0 disk 
├─sda1        8:1    0    94M  0 part /boot/efi
├─sda2        8:2    0   7,5G  0 part [SWAP]
├─sda3        8:3    0    32G  0 part /
└─sda4        8:4    0 407,6G  0 part /home
<...>
sdd           8:48   0   1,8T  0 disk 
└─sdd1        8:49   0   1,8T  0 part /media/username/T7
mmcblk0     179:0    0  29,9G  0 disk 
└─mmcblk0p1 179:1    0  29,9G  0 part /media/username/NIKON D90

username@username-Latitude-3460:~$ sudo ddrescue -dr5 /dev/mmcblk0 /media/username/T7/ND90/sdcard.img /media/username/T7/ND90/sdcard.mapfile
[sudo] password for username: 

GNU ddrescue 1.23
Press Ctrl-C to interrupt
     ipos:   32090 MB, non-trimmed:        0 B,  current rate:  15597 kB/s
     opos:   32090 MB, non-scraped:        0 B,  average rate:  17151 kB/s
non-tried:        0 B,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:   32090 MB,   bad areas:        0,        run time:     31m 10s
pct rescued:  100.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Finished                                     

username@username-Latitude-3460:~$ fdisk -l /media/username/T7/ND90/sdcard.img
Disk /media/username/T7/ND90/sdcard.img: 29,91 GiB, 32090619904 bytes, 62676992 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device                           Boot Start      End  Sectors  Size Id Type
/media/username/T7/ND90/sdcard.img1       8192 62676991 62668800 29,9G  c W95 FAT32

username@username-Latitude-3460:~$ Rscript -e '512*8192'
[1] 4194304

username@username-Latitude-3460:~$ cd /mnt
username@username-Latitude-3460:/mnt$ sudo mkdir sdcardrescue
username@username-Latitude-3460:/mnt$ sudo mount -o loop,offset=4194304 /media/username/T7/ND90/sdcard.img /mnt/sdcardrescue/

<...>

username@username-Latitude-3460:/mnt$ sudo umount /mnt/sdcardrescue


kouprianov: (Default)

The best solution ever:

https://devforum.zoom.us/t/how-to-convert-local-recording-zoom-files-into-mp4-m4a-and-m3u/1324/28

TrueIslandNobility
May '20

To anyone on a MAC here is what happened to me…

My first EVER zoom meeting recording and it error’d out and I was stuck with the “.zoom” files and couldn’t get it to recognize my scheduled recording in the app. I needed it to convert and followed the guidance to upload to my Google Drive and then contact support. They told me that due to the current situation, their support is overwhelmed and could not convert it for me.

I really needed the video file and I am going to edit it in Premier anyways so I just need it converted, no real metadata needs to come along with it. So I just tried my hand at this:

1.) Take the “.zoom” files and copied them
2.) Open Zoom and START a new recording
3.) Pause the recording
4.) Go to the LOCAL directory where the recordings are being saved as “.zoom” files
5.) Pasted the OLD “.zoom” files that I needed converted over the top of the newly created ones
6.) Without UNPAUSING the recording, STOP the recording and then end the call
7.) Zoom will start to convert the old files
8.) DONE

Once it was converted, all video and sound was there and I got my one hour video converted.

Not sure if that helps anyone and have not tested this on a WIN machine.
kouprianov: (Default)

COVID-19.SPb repository pushed to GitHub.

kouprianov: (Default)
find . -iname '*JPG' -exec jhead -n%Y_%m_%d__%H_%M_%S_%f {} +

Осторожнее с "." -- он ищет по всем папкам вниз.

kouprianov: (Default)

То, что они оба одной длины, это так случайно получилось после отсмотра.

ffmpeg -i DSC_0748.MOV -ss 00:00:00 -t 00:00:24 -c:v copy -c:a copy DSC_0748.cut.MOV
ffmpeg -i DSC_0749.MOV -ss 00:00:00 -t 00:00:24 -c:v copy -c:a copy DSC_0749.cut.MOV

Затем создается файл, скажем, combine со списком сливаемых файлов в виде:

file ./DSC_0748.cut.MOV
file ./DSC_0749.cut.MOV

Затем:

ffmpeg -safe 0 -f concat -i combine -vcodec copy -acodec copy merged.MOV
kouprianov: (Default)
Ссылки про приложение для помощи задержанным "Красная кнопка". Сам проект, про допуск в AppStore, про популярность в Беларуси и про отъезд создателя из России. Когда был незаконно задержан, задумался о том, что нужно еще другое приложение, которое позволяло бы быстро собирать данне о задержанных в базе ОВД-Инфо. Пока не додумал.

https://redbtn.info/
https://dev.ru/news/krasnaya-knopka-v-tope
https://habr.com/ru/news/t/525134/
https://ovdinfo.org/express-news/2020/09/01/sozdatel-prilozheniya-dlya-zaderzhannyh-krasnaya-knopka-uehal-iz-rossii-i

Определитель птиц онлайн
https://ptici.info/opredelitel-ptic.html

Электронный атлас-определитель птиц с фотографиями
https://whatbird.ru/

Сайт бёрдвочеров России
https://birdwatch.ru/

ООПТ СПб
http://oopt.spb.ru/
kouprianov: (Default)
После переезда 18.04 -> 20.04 отвалились Whitaker Words. Диагностика:

Step 1.

$ ./words
./words: error while loading shared libraries: libgcc_s.so.1: wrong ELF class: ELFCLASS64


Step 2.
$ readelf -d ./words

Dynamic section at offset 0xa95a0 contains 21 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x0000000c (INIT)                       0x8049530
 0x0000000d (FINI)                       0x80cd710
 0x00000004 (HASH)                       0x8048168
 0x00000005 (STRTAB)                     0x8048ba0
 0x00000006 (SYMTAB)                     0x80484b0
 0x0000000a (STRSZ)                      1282 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000015 (DEBUG)                      0x0
 0x00000003 (PLTGOT)                     0x80f26d8
 0x00000002 (PLTRELSZ)                   656 (bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0x80492a0
 0x00000011 (REL)                        0x80491d0
 0x00000012 (RELSZ)                      208 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffe (VERNEED)                    0x8049180
 0x6fffffff (VERNEEDNUM)                 2
 0x6ffffff0 (VERSYM)                     0x80490a2
 0x00000000 (NULL)                       0x0


Step 3.
$ sudo apt install libc.so.6
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libc.so.6

$ sudo apt install libgcc_s.so.1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libgcc_s.so.1


Step 4.
$ sudo apt-get install gcc-multilib


После этого работает нормально.
kouprianov: (Default)
Created a repo containing data, scripts, and visualisations for COVID-2019 epidemics in Russia.

https://github.com/alexei-kouprianov/COVID.2019.ru
kouprianov: (Default)

Вообще, такая задача встречается крайне редко, потому что гистограммы печатаются отлично и без того, при помощи специальной функции hist(). Более того, если зачем-то нужно именно напечатать ее при помощи plot(), то можно записать гистограмму в объект, а потом напечатать объект при помощи plot():

hist.x <- hist(x)
plot(hist.x)

Однако мне пришлось решить не совсем тривиальную задачу. Надо было напечатать в черно-белом варианте две просвечивающие сквозь друг друга гистограммы, назовем их A и B, с доволно узкими бинами. Будь бины широкими, разнонаправленная штриховка «читалась» бы легко, и то в глазах бы рябило, но с узкими все выглядело совсем плохо, хотя, конечно, при большом желании, читалось.

Мне же надо было сделать так, чтобы даже те, кто не имеет большого желания, поняли, что тут надо увидеть. Тогда я подумал, что было бы неплохо сделать одну из гистограмм (B) черной, оставив другую (A) заштрихованной, однако оставалась одна проблема: с определенного момента столбики B оказывались систематически выше, чем столбики A, в результате чего столбики A были бы совершенно не видны.

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

Оставалось решить только одну проблему: A и B генерировались стандартной функцией hist(), а откуда брать C, было ясно только в общих чертах. Теретически, надо было собрать объект «гистограмма» при помощи веревочной петли и палки, а потом подсунуть его функции plot() для печати. По сути, гистограмма -- это определенной формы объект класса list, в котором в виде числовых векторов хранятся данные о границах (breaks) и центрах (mids) бинов, их высотах (counts) и кое-какая еще информация, уже не так нужная для того конкретного рисунка, который я собирался напечатать, так что задача не представлялась неразрешимой. Постепенно, после нескольких проб и ошибок, это смутное понимание оформилось в скрипт (имена объектов изменены):

# Недолго думая я использовал первую попытку печати гистограмм, 
# чтобы создать объекты hist.A и hist.B:
hist.A <- hist(A$x, xlim=c(0,50), breaks=-.5:100.5, angle=45, density=22)
hist.B <- hist(B$x, breaks=-.5:152.5, angle=-45, density=22, add=TRUE)

counts <- NULL

# Мне надо было нарисовать увеличенно только часть гистограммы, 
# поэтому я взял по 50 бинов от каждой (понятно, что можно было
# взять обе целиком, ту, в которой бинов было меньше, дополнить 
# нулями в counts).

for(i in 1:50){
   if(hist.A$counts[i] < hist.B$counts[i]){
      counts <- c(counts, hist.A$counts[i])}
   else{
      counts <- c(counts, hist.B$counts[i])}
   }
}

breaks <- -.5:50.5
mids <- 0:50
equidist <- TRUE

# Теперь собираем гистограмму:

hist.C <- list(
breaks,
counts,
mids,
equidist
)

# Добавляем имена элементов объекта:

names(hist.C) <- c(
"breaks",
"counts",
"mids",
"equidist"
)

# Добавляем специфическое имя класса ("histogram"):

attributes(hist.C$class) <- "histogram"

Оставалось только напечатать все это.

hist(A$x, xlim=c(0,30), breaks=-.5:100.5, angle=45, density=22, main="", xlab="Legend for x-axis")
hist(B$x, breaks=-.5:152.5, col=1, add=TRUE)
plot(hist.C, col="white", density=22, add=TRUE)

Там еще легенду пришлось вручную напечатать, но это такие танцы были с rect() и text(), что лучше о них не рассказывать.

kouprianov: (Default)
Несмотря на все предосторожности, Linux отлично видит System Volume Information folder на флэшках, более того, непринужденно пишет туда файлы, даже если их не удается записать в корень.

https://www.winhelponline.com/blog/what-is-system-volume-information-can-i-delete/

2020-02-20

Feb. 20th, 2020 11:34 pm
kouprianov: (Default)
2020-02-20 is worse than 2020-02-02 but still something.
kouprianov: (Default)

There are several characters that should be avoided within data fields in .csv and .tdv like files handled by R's read.table() with as many default settings untouched as it is only possible.

#
"
'

The former gives a false impression of a comment, the two latter may be mistaken for data field borders.

Substitute:

" with ”
' with ’
kouprianov: (Default)
Designed a script to process the transcripts of the video records we prepare within the framework of a project on Polling Stations Ethnography. Draws nice pics.

Написал скрипт для обработки дневников видеонаблюдения, создаваемых в рамках проекта по этнографии избирательных участков. Пока он просто натренирован быстро рисовать картинки по динамике явки, но картинки красивые.

https://github.com/alexei-kouprianov/Polling-station-Ethnography
kouprianov: (Default)
На прошлой неделе диск, как я уже говорил, перешел в режим Read only. Сделал бэкап. Сделал решительный шаг -- перешел на SSD. Запихал его внутрь лаптопа, вставил LiveCD с XUbuntu 18.04.1, загрузился пробник Xubuntu, разбил с его помощью диск на части (в следующий раз надо сразу не забыть, что нужна отдельная партиция под boot, вообще же у меня получилось так boot-swap-root-home). Постепенно доставилось до 18.04.3.

Без проблем поставил GIMP, Telegram, InkScape, jhead, ffmpeg, pandoc, VLC, okular, git, unrar, remmina.

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

Printer driver Canon MF4150 Ubuntu 18.04 : https://kouprianov.dreamwidth.org/358175.html (с поправкой на версию драйвера -- сейчас уже 500, а не 360)

medit : https://kouprianov.dreamwidth.org/359026.html

TeX : https://kouprianov.dreamwidth.org/302476.html

R : https://kouprianov.dreamwidth.org/360493.html

Do not forget to install.packages() : aomisc, car, drc, fitdistrplus, forecast, maps, mblm, moments, nlme, OpenStreetMap, rgdal, rjson, rmarkdown, statnet, TeachingDemos

rgdal :

Основано на https://gist.github.com/dncgst/111b74066eaea87c92cdc5211949cd1e

sudo apt-get install gdal-bin proj-bin libgdal-dev libproj-dev

XSane :

sudo apt-get install sane sane-utils libsane-extras xsane

Tesseract :

sudo apt install tesseract-ocr
sudo apt install tesseract-ocr-rus tesseract-ocr-deu tesseract-ocr-ukr tesseract-ocr-kor

QGIS :

Основано на ответе тут: https://gis.stackexchange.com/a/348547/133650

sudo add-apt-repository ppa:ubuntugis/ppa

Add this PPA and remove from /etc/apt/sources.list the sentences:

deb https://qgis.org/ubuntugis/ bionic main
deb-src https://qgis.org/ubuntugis/ bionic main

After that install QGIS:

sudo apt update
sudo apt install qgis python3-qgis qgis-plugin-grass

Если недостает GPG-keys, то за ними можно послать:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51F523511C7028C3

Вместо 51F523511C7028C3 надо подставить ключ, с которым возникли проблемы.

Основано на ответе отсюда (цитирую ниже) : https://askubuntu.com/a/15272
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

where <PUBKEY> is your missing public key for repository, e.g. 8BAF9A6F.

Then update
sudo apt-get update

ALTERNATE METHOD:
sudo gpg --keyserver pgpkeys.mit.edu --recv-key  
sudo gpg -a --export  | sudo apt-key add -
sudo apt-get update

LibreOffice :
Strangely enough it is not installed fully. Writer and Calc are present but not the Impress, e.g., which is rather annoying, to say the least. Here is the remedy for it: http://tipsonubuntu.com/2018/08/11/install-libreoffice-6-1-ubuntu-18-04-16-04/

skype :
sudo snap install skype --classic

Не люблю Skype, но, по не вполне понятным причинам, все используют для связи именно его. Поставил. Почувствовал себя по уши в Microsoft. Гадкое ощущение...

slack :
sudo snap install slack --classic
Еще один продукт MS, но пришлось поставить для работы...

March 2025

S M T W T F S
      1
2345678
910 1112131415
16171819202122
23242526272829
3031     

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 6th, 2025 07:56 pm
Powered by Dreamwidth Studios