English: Submit & commit Translation on WhatCanIDoForLibreOffice repository using LibreOffice Gerrit code review system.

Korean: 리브레오피스(LibreOffice) 소스코드 리뷰 시스템 Gerrit에서 관리하는 WhatCanIDoForLibreOffice 저장소에 번역 내용 커밋 및 적용하기 기록

Korean follows English. (私の日本語の実力が本当に足りなくて英語と韓国語だけ書きました。)

June 17th Wednesday, 2020.

Japanese TDF Member, Jun Nogata wrote the post on LibreOffice Korean Facebook.

Below is the post he wrote on LibreOffice Korean Facebook.

(He is Japanese speaker. But, He study Korean and wrote the post on LibreOffice Korean Facebook.)

Below is the his post

안녕하새요. 질문이 있어요.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

logerrit없어요. 모르겠어요~😭
이본어 번역을 commit하고 싶어요...😢
Translated into English
Hello, I have a question.

How to commit the files on the repository, WhatCanIDoForLibreOffice
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

I have no logerrit file. I don't know~😭
I want to commit the Japanese translation.
------
I corrected his Korean writing.

안녕하세요. 질문이 있습니다.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

저는 logerrit이 없어요. 모르겠어요~😭
일본어 번역을 commit하고 싶어요...😢

He want to add Japanese translation on "What Can I Do For LibreOffice" repository, controlled by TDF Gerrit code review system.

Here is "What Can I Do For LibreOffice" repository.
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

gerrit.libreoffice.org

Here is "What Can I Do For LibreOffice" Homepage.
https://whatcanidoforlibreoffice.org/

 

What can I do for LibreOffice

LibreOffice Language: English ‪čeština | ‪Czech ‪Cymraeg | ‪Welsh Español | Spanish ‪Français | ‪French ‪Italiano | ‪Italian ‪한국어 | ‪Korean ‪Português do Brasil | ‪Brazilian Portuguese ‪Slovenščina | ‪Slovenian ‪S

whatcanidoforlibreoffice.org

I added Korean translation on the "What Can I Do For LibreOffice" Homepage.

I summarize the log to add add my translation(Korean) on "What Can I Do For LibreOffice" repository. (It can also apply to translation for CJK languages such as Japanese, Chinese[Traditional, Simplified], etc.)

For the first time, You need to set yourself up LibreOffice gerrit code review system.

Below is Detail contents about Setup yourself up for gerrit.

https://wiki.documentfoundation.org/Development/gerrit/setup#Setting_yourself_up_for_gerrit_-_the_easy_way

 

Development/gerrit/setup - The Document Foundation Wiki

Setting yourself up for gerrit Before you start: Troubleshooting help The instructions below should be easy and quick to follow. However, if you get stuck somewhere, here is how you get help: Register in Gerrit for first time Gerrit uses The Document Found

wiki.documentfoundation.org

Next time, Get the "What Can I Do For LibreOffice" source code from "WhatCanIDoForLibreOffice" repository.

git clone "https://git.libreoffice.org/WhatCanIDoForLibreOffice"

And then, add /locales/[your-language code].inifile and modify index.html and locales.ini files.

I'm Korean and My mother tongue is Korean, so My Language's ISO Language code is ko-KR.
So, I added ko-kr.inifile.

(For example, If you are Japanese, You can add Japanese code ja and add ja.inifile. Also you are Simplified Chinese speaker, You can add zh-cn.ini file for ISO's Simplified Chinese Language code zh-CN, you are Traditional Chinese speaker, You can add zh-tw.ini file for ISO's Simplified Chinese Language code zh-TW.)

below is my committed some code link Add Korean [ko-kr] translation

 

Diff - f82b424ce060af3a0b10bf6456cbbb96b39cba96^! - WhatCanIDoForLibreOffice - Gitiles

commitf82b424ce060af3a0b10bf6456cbbb96b39cba96[log]

git.libreoffice.org

and commit your modified and added files.

git commit -a

you have to write commit logs.

After wrote the commit log, You can see logs

[master f82b424] Add Korean [ko-kr] translation.
3 files changed, 58 insertions(+)

and then, I have to submit at TDF Gerrit system using logerrit file.

% curl -LJO https://gist.githubusercontent.com/studioego/943695359245924f03268e3bd5fd62ca/raw/logerrit -o logerrit

Next time, You change the logerrit file's execute permission.

% chmod +x logerrit

(You have to regist ssh key on LibreOffice gerrit review system.)

and then submit the commit using logerrit on LibreOffice gerrit review system.

% ./logerrit submit master
Enter passphrase for key '/****/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 424 bytes | 424.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, done
remote: ERROR: commit f82b424: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
! [remote rejected] HEAD -> refs/for/master (commit 4a07bf2: missing Change-Id in message footer)
error: 레퍼런스를 'ssh://logerrit/WhatCanIDoForLibreOffice'에 푸시하는데 실패했습니다

Ooops, Because of missing Change-ID in message footer, You don't submit the commit.

So, install the hook

% gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
Enter passphrase for key '/****/.ssh/id_rsa':
commit-msg 100% 1791 5.3KB/s 00:00

and then amend the commit (add Change-ID)

git commit --amend --no-edit
[master f82b424] Add Korean [ko-kr] translation.
Date: Fri Jun 14 01:26:26 2019 +0900

after amand the commit, added Change-Id in message footer.
Finally, push your changes again

% ./logerrit submit master
Enter passphrase for key '/********/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 468 bytes | 468.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://gerrit.libreoffice.org/.../WhatCanIDoForL.../+/73976 Add Korean [ko-kr] translation.
 [NEW]
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
* [new branch] HEAD -> refs/for/master

and submit the gerrit review system and If the Libreoffice's "WhatCanIDoForLibreOffice" repository soruce code reviewer allow the commit, He/She accept your source code.
https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976

 

https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976

 

gerrit.libreoffice.org

Finally, After The Repository committer checked the your commit, He’ve approve the your submitted source code.

Change has been successfully cherry-picked as f82b424ce060af3a0b10bf6456cbbb96b39cba96 by ***

Here is my commit log Add Korean [ko-kr] translation and review link https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976 for submit the translation source code on WhatCanIDoForLibreOffice repository.

With this opportunity, I would like East Asian developers to collaborate on various developments and uses on LibreOffice.

Collaboration

  • Korean: 협업(協業)
  • Japanese: 協力, コラボレーション
  • Simplified Chinese: 合作/协作
  • Traditional Chinese: 協作/合作

우리말로 쓴 글

2020년 6월 17일 수요일.

일본의 문서재단(The Document Foundation)회원인 노가타 준(Jun Nogata, 野方純)님께서 페이스북의 "리브레오피스 (한국어)"채널에 글을 올리셨습니다.

안녕하새요. 질문이 있어요.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

logerrit없어요. 모르겠어요~😭
이본어 번역을 commit하고 싶어요...😢
(여기서는 일본분의 글을 아래와 같이 어법에 맞게 고쳐보았습니다.)

안녕하세요. 질문이 있습니다.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

저는 logerrit이 없어요. 모르겠어요~😭
일본어 번역을 commit하고 싶어요...😢

다음 링크는 노가타 준님이 올린 리브레오피스 한국어 채널의 글 입니다.

노가타 준님은 문서재단(TDF; The Document Foundation)의 Gerrit 소스코드 검토 시스템에서 관리하는 "What Can I Do For LibreOffice" 저장소에 일본어 번역을 추가하고 싶어하였습니다.

다음은 "What Can I Do For LibreOffice"저장소 링크입니다.
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

gerrit.libreoffice.org

다음은 "What Can I Do For LibreOffice" 홈페이지 링크입니다.
https://whatcanidoforlibreoffice.org/

 

What can I do for LibreOffice

LibreOffice Language: English ‪čeština | ‪Czech ‪Cymraeg | ‪Welsh Español | Spanish ‪Français | ‪French ‪Italiano | ‪Italian ‪한국어 | ‪Korean ‪Português do Brasil | ‪Brazilian Portuguese ‪Slovenščina | ‪Slovenian ‪S

whatcanidoforlibreoffice.org

저는 "What Can I Do For LibreOffice" 홈페이지에 한국어 번역을 하였습니다.

저는 "What Can I Do For LibreOffice"의 저장소에 한국어 번역을 추가한 기록을 다음과 같이 정리하였습니다.
(이 글을 참조로 하여 일본어[日本語], 중국어[번체繁體, 간체简体] 등등 동아시아 언어 사용사는 사람이 "What Can I Do For LibreOffice"의 저장소에 번역을 올릴 수 있습니다.)

맨 처음으로, LibreOffice의 gerrit 리뷰 시스템을 설정을 해야합니다.
상세한 내용은 다음의 링크 Setting yourself up for gerrit - the easy way에서 확인하시기 바랍니다.

그 다음, "WhatCanIDoForLibreOffice" 저장소에서 "What Can I Do For LibreOffice" 소스코드를 아래의 명령어로 받습니다.

git clone "https://git.libreoffice.org/WhatCanIDoForLibreOffice"

그리고, /locales/[your-language code].ini 파일을 추가 및 index.htmllocales.ini 파일을 수정합니다.

저는 한국인이며, 모국어가 한국어입니다. 그래서 한국어의 ISO언어 코드는 ko-KR입니다.
그래서 저는 ko-kr.ini파일을 추가했습니다.

(예를들어, 일본어를 사용하는 일본사람이라면, 일본어 언어 코드가 ja 이니 ja.ini파일을 추가하여 번역을 적용할 수 있습니다. 또한, 간체 중국어를 사용하는 사람이라면 간체 중국어에 해당하는 언어 코드가 zh-CN 이니 zh-cn.ini을 추가하여 번역을 적용할 수 있습니다. 그리고 번체 중국어 사용하는 사람이라면 번체 중국어에 해당하는 언어코드가 zh-TW 이니 zh-tw.ini파일 추가하여 번역을 적용할 수 있습니다.)

다음은 제가 커밋한 소스코드의 링크 Add Korean [ko-kr] translation 입니다.

 

Diff - f82b424ce060af3a0b10bf6456cbbb96b39cba96^! - WhatCanIDoForLibreOffice - Gitiles

commitf82b424ce060af3a0b10bf6456cbbb96b39cba96[log]

git.libreoffice.org

이후에 추가 및 수정한 소스코드 파일을 커밋합니다.

git commit -a

커밋 로그에 커밋에 해당하는 제목과 내용을 써야합니다. 커밋 로그를 쓴 후엔, 다음의 로그를 볼 수 있습니다.

[master f82b424] Add Korean [ko-kr] translation.
3 files changed, 58 insertions(+)

이제 커밋을 하였으면, logerrit 파일을 이용하여 문서재단(TDF)가 관리하는 Gerrit 코드 리뷰 시스템에 소스코드를 제출해봅시다.

다음은, 제가 "WhatCanIDoForLibreOffice" 저장소에 맞게 수정한 logerrit 파일을 gist저장소에서 다운로드 받는 명령어입니다.

% curl -LJO https://gist.githubusercontent.com/studioego/943695359245924f03268e3bd5fd62ca/raw/logerrit -o logerrit

그 다음, logerrit파일에 실행 권한을 추가합니다.

% chmod +x logerrit

(알림: 필수로 리브레오피스 Gerrit 리뷰시스템에서 SSH 키를 등록해야합니다.)

logerrit파일을 이용하여, 커밋한 소스코드를 제출합니다.

% ./logerrit submit master
Enter passphrase for key '/****/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 424 bytes | 424.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, done
remote: ERROR: commit f82b424: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
! [remote rejected] HEAD -> refs/for/master (commit 4a07bf2: missing Change-Id in message footer)
error: 레퍼런스를 'ssh://logerrit/WhatCanIDoForLibreOffice'에 푸시하는데 실패했습니다

아, Gerrit에서 사용하는 Change-ID를 커밋 메시지 하단에 없기때문에, 소스코드 커밋을 제출할 수 없습니다.

그래서 위의 메세지에서 안내되는 내용처럼 훅(hook)을 다음과 같이 설치합니다.

% gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
Enter passphrase for key '/****/.ssh/id_rsa':
commit-msg 100% 1791 5.3KB/s 00:00

그리고, 커밋로그에 Change-ID를 추가하도록 진행합니다.

git commit --amend --no-edit
[master f82b424] Add Korean [ko-kr] translation.
Date: Fri Jun 14 01:26:26 2019 +0900

커밋로그에 Change-ID를 추가된것을 알 수 있습니다.

마지막으로, 다시 logerrit으로 소스코드를 제출합니다.

% ./logerrit submit master
Enter passphrase for key '/********/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 468 bytes | 468.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://gerrit.libreoffice.org/.../WhatCanIDoForL.../+/73976 Add Korean [ko-kr] translation.
 [NEW]
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
* [new branch] HEAD -> refs/for/master

이제, Gerrit 리뷰 시스템에 제출하였습니다.

https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976
만약, 리브레오피스의 WhatCanIDoForLibreOffice 소스코드 리뷰어가 커밋를 허용하면, 소스코드가 적용됩니다.

마침내, WhatCanIDoForLibreOffice 저장소 커미터가 커밋을 확인한 후에, 커미터는 제출한 소스코드를 승인하였습니다.

Change has been successfully cherry-picked as f82b424ce060af3a0b10bf6456cbbb96b39cba96 by ***

이제 저장소에 제출한 번역 소스코드가 적용되었습니다.

다음은 제가 WhatCanIDoForLibreOffice 저장소에 제출한 번역 소스코드 리뷰 링크 https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976 와 커밋링크 Add Korean [ko-kr] translation 입니다.

이 글을 계기로, 여러가지 개발 및 사용관련으로 CJK 지역의 협업(協業), (Japanese: 協力, Simplified Chinese: 合作/协作, Traditional Chinese: 協作/合作, English: Collaboration)을 이루었으면 합니다. :)

Buy me a coffeeBuy me a coffee

우분투(Ubuntu)에서 리브레오피스(LibreOffice)의 소스코드를 빌드할 수 있게 의존성 있는 패키지를 가져오도록 하는 선택하는 옵션으로 의존성있는 패키지 설치를 진행해보았습니다.

$ sudo apt build-dep libreoffice
[sudo] password for ***:
Reading package lists... Done
E: You must put some 'deb-src' URIs in your sources.list

아... deb-src URI가 sources.list에 없다고 sources.listdeb-src를 채워놓으라고 하군요.

그럼, sources.listdeb-src URI를 채워넣어야죠.

sources.list 파일을 수정해봅니다.

$ sudo vi /etc/apt/sources.list

이미 deb-src는 있으나 #으로 주석처리되어 있습니다. 그럼, 저장소 목록에 있는 deb-src 앞의 # 주석을 해제합니다.

그리고, 저장소 목록을 다시 업데이트 합니다.

$ sudo apt update

그리고 다시 아래의 명령어로 libreoffice에 대해 빌드할수 있게 의존성있는 패키지를 설치해봅니다.

$ sudo apt-get build-dep libreoffice
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  acl ant ant-optional autoconf automake autopoint autotools-dev binutils binutils-common binutils-x86-64-linux-gnu
  bison build-essential ca-certificates-java comerr-dev cpp cpp-9 dctrl-tools debhelper default-jdk
  default-jdk-headless default-jre default-jre-headless default-libmysqlclient-dev devscripts dh-apparmor
  dh-autoreconf dh-python dh-strip-nondeterminism doxygen dpkg-dev dwz evolution-data-server-common fakeroot
  firebird-dev firebird3.0-common firebird3.0-common-doc firebird3.0-server-core flex fontforge-common fontforge-nox
  fonts-crosextra-carlito fonts-dejavu fonts-dejavu-extra fonts-liberation2 fonts-urw-base35 g++ g++-9 gcc gcc-9
  gcc-9-base gdb gettext ghostscript gir1.2-atk-1.0 gir1.2-atspi-2.0 gir1.2-camel-1.2 gir1.2-ebackend-1.2
  gir1.2-ebook-1.2 gir1.2-ebookcontacts-1.2 gir1.2-edatabook-1.2 gir1.2-edataserver-1.2 gir1.2-freedesktop
  gir1.2-gdkpixbuf-2.0 gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gir1.2-gtk-3.0 gir1.2-harfbuzz-0.0
  gir1.2-langtag-0.6 gir1.2-pango-1.0 gir1.2-secret-1 gir1.2-soup-2.4 gobject-introspection gperf graphviz
  hyphen-en-us icu-devtools imagemagick imagemagick-6-common imagemagick-6.q16 intltool-debian java-common javahelper
  junit4 krb5-multidev libabw-0.1-1 libabw-dev libamd2 libann0 libapache-pom-java libarchive-zip-perl libasan5
  libassuan-dev libatk-bridge2.0-dev libatk1.0-dev libatomic1 libatspi2.0-dev libavahi-client-dev libavahi-common-dev
  libb-hooks-op-check-perl libbabeltrace1 libbinutils libblas-dev libblas3 libblkid-dev libbluetooth-dev libbluetooth3
  libboost-atomic1.71-dev libboost-atomic1.71.0 libboost-chrono1.71-dev libboost-chrono1.71.0 libboost-date-time-dev
  libboost-date-time1.71-dev libboost-date-time1.71.0 libboost-dev libboost-filesystem-dev libboost-filesystem1.71-dev
  libboost-filesystem1.71.0 libboost-iostreams-dev libboost-iostreams1.71-dev libboost-iostreams1.71.0
  libboost-locale-dev libboost-locale1.71-dev libboost-locale1.71.0 libboost-regex1.71-dev libboost-regex1.71.0
  libboost-serialization1.71-dev libboost-serialization1.71.0 libboost-system1.71-dev libboost-system1.71.0
  libboost-thread1.71-dev libboost-thread1.71.0 libboost1.71-dev libbrotli-dev libbsh-java libbtf1 libc-dev-bin
  libc6-dev libcairo-script-interpreter2 libcairo2-dev libcamd2 libcamel-1.2-62 libcamel1.2-dev libcc1-0 libccolamd2
  libcdr-0.1-1 libcdr-dev libcdt5 libcgraph6 libcholmod3 libclang1-10 libclass-method-modifiers-perl
  libclucene-contribs1v5 libclucene-core1v5 libclucene-dev libcmis-0.5-5v5 libcmis-dev libcolamd2
  libcommons-logging-java libcommons-parent-java libcppunit-1.15-0 libcppunit-dev libcroco3 libcrypt-dev libctf-nobfd0
  libctf0 libcups2-dev libcupsimage2 libcupsimage2-dev libcurl4-gnutls-dev libcxsparse3 libdatrie-dev libdbus-1-dev
  libdconf-dev libdebhelper-perl libdevel-callchecker-perl libdpkg-perl libdw1 libdynaloader-functions-perl
  libe-book-0.1-1 libe-book-dev libebackend-1.2-10 libebackend1.2-dev libebook-1.2-20 libebook-contacts-1.2-3
  libebook-contacts1.2-dev libebook1.2-dev libedata-book-1.2-26 libedata-book1.2-dev libedataserver-1.2-24
  libedataserver1.2-dev libegl-dev libegl1-mesa-dev libel-api-java libemf1 libencode-locale-perl libeot-dev libeot0
  libepoxy-dev libepubgen-0.1-1 libepubgen-dev libetonyek-0.1-1 libetonyek-dev libexif12 libexpat1-dev
  libexttextcat-2.0-0 libexttextcat-data libexttextcat-dev libfakeroot libfbclient2 libffi-dev libfftw3-double3
  libfile-homedir-perl libfile-listing-perl libfile-stripnondeterminism-perl libfile-which-perl libfontconfig1-dev
  libfontforge3 libfreehand-0.1-1 libfreehand-dev libfreetype-dev libfreetype6-dev libfribidi-dev libgcc-9-dev
  libgck-1-0 libgcr-base-3-1 libgcrypt20-dev libgd3 libgdata-common libgdata22 libgdk-pixbuf2.0-dev libgdraw6
  libgfortran5 libgif7 libgirepository1.0-dev libgl-dev libgl1-mesa-dev libgles-dev libgles1 libgles2
  libgles2-mesa-dev libglib2.0-dev libglib2.0-dev-bin libglm-dev libglu1-mesa libglu1-mesa-dev libglvnd-dev libglx-dev
  libgmp-dev libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev libgnutlsxx28 libgoa-1.0-0b
  libgoa-1.0-common libgomp1 libgpg-error-dev libgpgme-dev libgpgmepp-dev libgphoto2-6 libgphoto2-port12 libgraphblas3
  libgraphite2-dev libgs9 libgs9-common libgssrpc4 libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0
  libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgtk-3-dev libgts-0.7-5 libgvc6 libgvpr2 libhamcrest-java
  libharfbuzz-dev libharfbuzz-gobject0 libharfbuzz-icu0 libhsqldb1.8.0-java libhtml-parser-perl libhtml-tagset-perl
  libhtml-tree-perl libhttp-cookies-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libhunspell-dev
  libhyphen-dev libhyphen0 libib-util libice-dev libicu-dev libidn11 libidn2-dev libieee1284-3 libijs-0.35
  libimport-into-perl libio-html-perl libio-pty-perl libio-socket-ssl-perl libipc-run-perl libisl22 libitm1
  libixion-0.15-0 libjbig-dev libjbig2dec0 libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libjsp-api-java
  libkadm5clnt-mit11 libkadm5srv-mit11 libkdb5-9 libkf5attica-dev libkf5auth-dev libkf5auth-dev-bin libkf5auth5
  libkf5bookmarks-dev libkf5codecs-dev libkf5completion-dev libkf5config-dev libkf5config-dev-bin
  libkf5configwidgets-dev libkf5coreaddons-dev libkf5coreaddons-dev-bin libkf5dbusaddons-dev libkf5globalaccel-dev
  libkf5guiaddons-dev libkf5i18n-dev libkf5iconthemes-dev libkf5itemviews-dev libkf5jobwidgets-dev libkf5kio-dev
  libkf5kiofilewidgets5 libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5sonnet-dev-bin libkf5textwidgets-dev
  libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libklu1 liblab-gamut1 liblangtag-common
  liblangtag-dev liblangtag-gobject0 liblangtag1 liblapack-dev liblapack3 liblcms2-dev libldap2-dev libldl2 libllvm10
  liblpsolve55-dev liblqr-1-0 liblsan0 libltdl-dev liblwp-mediatypes-perl liblwp-protocol-https-perl liblzma-dev
  libmagick++-6.q16-8 libmagickcore-6.q16-6 libmagickwand-6.q16-6 libmdds-dev libmetis5 libmhash2
  libmodule-runtime-perl libmongoose2 libmoo-perl libmount-dev libmpc3 libmspub-0.1-1 libmspub-dev libmwaw-0.3-3
  libmwaw-dev libmysqlclient-dev libmysqlclient21 libmythes-1.2-0 libmythes-dev libneon27-gnutls libneon27-gnutls-dev
  libnet-http-perl libnet-ssleay-perl libnspr4 libnspr4-dev libnss3 libnss3-dev libodbc1 libodfgen-0.1-1 libodfgen-dev
  libopengl-dev libopengl0 libopenjp2-7 liborc-0.4-0 liborc-0.4-dev liborc-0.4-dev-bin liborcus-0.15-0 liborcus-dev
  liborcus-spreadsheet-model-0.15-0 libp11-kit-dev libpagemaker-0.0-0 libpagemaker-dev libpango1.0-dev
  libpangoxft-1.0-0 libpaper1 libparams-classify-perl libpathplan4 libpcre16-3 libpcre2-32-0 libpcre2-dev
  libpcre2-posix2 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpcsclite1 libphonenumber7 libpixman-1-dev libplot2c2
  libpng-dev libpoppler-cpp-dev libpoppler-cpp0v5 libpoppler-dev libpoppler-private-dev libpoppler97 libpq-dev libpq5
  libprotobuf17 libpsl-dev libpstoedit0c2a libpthread-stubs0-dev libpython3-dev libpython3.8-dev libqgpgme7
  libqt5concurrent5 libqt5script5 libqt5scripttools5 libqt5sql5 libqt5x11extras5-dev libquadmath0 libraptor2-0
  libraptor2-dev librasqal3 librasqal3-dev librbio2 librdf0 librdf0-dev librevenge-0.0-0 librevenge-dev
  librole-tiny-perl libsane libsane-common libsane-dev libsecret-1-0 libsecret-1-dev libsecret-common libselinux1-dev
  libsepol1-dev libservlet-api-java libservlet3.1-java libsm-dev libsnmp-base libsnmp35 libsoup2.4-dev libspiro1
  libspqr2 libsqlite3-dev libssl-dev libstdc++-9-dev libstrictures-perl libsub-override-perl libsub-quote-perl
  libsuitesparse-dev libsuitesparseconfig5 libtasn1-6-dev libthai-dev libtiff-dev libtiffxx5 libtimedate-perl
  libtommath1 libtool libtry-tiny-perl libtsan0 libubsan1 libumfpack5 libunbound8 libuninameslist1 liburi-perl
  libvisio-0.1-1 libvisio-dev libvulkan-dev libwayland-bin libwayland-dev libwebpmux3 libwebsocket-api-java
  libwpd-0.10-10 libwpd-dev libwpg-0.3-3 libwpg-dev libwps-0.4-4 libwps-dev libwww-perl libwww-robotrules-perl
  libx11-dev libx11-xcb-dev libxapian30 libxau-dev libxaw7-dev libxcb-icccm4-dev libxcb-render0-dev libxcb-shm0-dev
  libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev
  libxi-dev libxinerama-dev libxkbcommon-dev libxkbfile-dev libxml2-dev libxml2-utils libxmlsec1-dev libxmlsec1-gcrypt
  libxmlsec1-gnutls libxmlsec1-nss libxmu-dev libxmu-headers libxpm-dev libxrandr-dev libxrender-dev libxslt1-dev
  libxt-dev libxtst-dev libyajl-dev libyajl2 libzip5 linux-libc-dev lp-solve m4 make maven-repo-helper mysql-common
  nettle-dev odbcinst odbcinst1debian2 openjdk-11-jdk openjdk-11-jdk-headless openjdk-11-jre openjdk-11-jre-headless
  pango1.0-tools patchutils perl-openssl-defaults pkg-config po-debconf poppler-data pstoedit python3-dev python3-lxml
  python3-mako python3-markdown python3-packaging python3-pyparsing python3.8-dev qt5-qmake qt5-qmake-bin qtbase5-dev
  qtbase5-dev-tools qtchooser qtscript5-dev rdfind symlinks ucpp unixodbc-dev unzip uuid-dev wayland-protocols wdiff
  x11proto-core-dev x11proto-dev x11proto-input-dev x11proto-randr-dev x11proto-record-dev x11proto-xext-dev
  x11proto-xinerama-dev xorg-sgml-doctools xsltproc xtrans-dev zip zlib1g-dev
0 upgraded, 593 newly installed, 0 to remove and 0 not upgraded.
Need to get 499 MB of archives.
After this operation, 1707 MB of additional disk space will be used.
Do you want to continue? [Y/n]

이제, 리브레오피스(LibreOffice)를 빌드(Build)할 준비가 되었습니다.

Buy me a coffeeBuy me a coffee

2020년 6월 14일, 트와이스의 쯔위(Tzuyu, 周子瑜)의 생일이였습니다.
집 근처에 JYP엔터테인먼트 본사건물이 있는터라, 산책을 하면 쯔위 생일 관련 광고가 많이 보이더군요.
쯔위 생일을 맞아, 온 세상의 쯔위팬들이 쯔위 생일을 축하해주는지에 대하여 확인을 하였습니다!


쯔위야 생일 축하해! 🥳
Happy Birthday, Tzuyu!
生日快樂,周子瑜!
ツウィさん,お誕生日おめでとう!🎂

쯔위가 아니였으면 저는 중국어(한어, 漢語/汉语, Mandarin Chinese)공부를 안했을 거에요.

2020년, 집근처 올림픽공원 북2문으로 산책할때 본 쯔위 생일 광고를 공개합니다!


첨언. 이 광고는 올림픽공원 북2문 건너편 JYP엔터테인먼트 사옥 근처 버스정류장에서 찍은 것입니다.
아래는 JYP엔터테인먼트 사옥 사진입니다.

Buy me a coffeeBuy me a coffee

IBM에서 내놓은 Plex 글꼴에 한국어도 드디어 지원합니다!

홈페이지: https://www.ibm.com/plex/

 

IBM Plex

IBM Plex® is our new typeface. It’s global, it’s versatile, and it’s distinctly IBM.

www.ibm.com

IBM Plex v5.0.0
출처: https://github.com/IBM/plex/releases/tag/v5.0.0

IBM Plex Sans  
IBM Plex Serif  
IBM Plex Sans Condensed  
IBM Plex Mono  
This includes some changes to the vertical metrics of the font files as well as a few changes to the available glyphs.

Breaking  
Changed IBM Plex Sans Condensed to IBM Plex Sans Cond, this won't impact web applications, but could for other third party applications  
New  
IBM Plex Sans KR (Korean)  ```

링크에서 글꼴을 다운로드 받아 Mac에 설치하였습니다.

이후, Mac의 LibreOffice에 Plex글꼴을 사용해보았습니다.

IBM Plex 글꼴설정하고 한글을 입력해보니 한글이  제대로 표현되는 것 같습니다.

그러나 한자(漢字, Chinese Character, Hanja; Korean name for the Chinese characters)의 경우 한국어에서 사용하는 KSC5601에 등록된 한자 4888개의 글자 범위 이외 일본어, 중국어[번체,간체] 한자입력시 글꼴이 □로 찍혀 나옴을 확인함.

예를 들어 "Translation"에 대한 한자를 테스트 해보았습니다.

Korean: 飜譯 번역 "beon yeok"

Traditional Chinese: 翻譯 "fānyì" ㄈㄢㄧˋ

Simplified Chinese: 翻译 "fānyì"

Japanese: ほんやく"honyaku"

아래는 한자(漢字)에 대한 각 나라별 코드 포인트(code point)를 정리하였습니다.

Korean: 飜(U+98DC)譯(U+8B6F)

Traditional Chinese: 翻(U+7FFB)譯(U+8B6F)

Simplified Chinese: 翻(U+7FFB)译(U+8BD1)

Japanese 翻(U+7FFB)訳(U+8A33)

 

옛날 KSC5601에 등록된 한국어의 한자 목록에 있는 한자 이외, 중국어 및 일본어에서 사용하는 한자는 □로 찍혀 나옴을 그림에서 확인하였습니다.


그러나, 오픈오피스(openOffice)최신버전에서는 IBM Plex글꼴에 포함이 안된 글자(code point)등에는 fallback 처리를 하여 렌더링시 글씨가 보이도록 처리하는 것 같더군요.

아마, openOffice에서 LibreOffice로 전환을 하면서 CJK관련 이슈를 제대로 모르고 개발된 느낌이듭니다.

이 부분은 Fallback font이슈 관련으로 조사 후에 issue등록을 해야할 것 같습니다.


아마 IBM Plex 의 중국어(Chinese) 및 일본어(Japanese)는 올해 말이나 내년쯤에 나올 것 같습니다.

 

아래는, 이 글을 사용하는 시점에서 지원하는 언어 목록입니다.

https://www.ibm.com/plex/languages/

 

IBM Plex

IBM Plex® is our new typeface. It’s global, it’s versatile, and it’s distinctly IBM.

www.ibm.com

  • Arabic (아라비아 문자)
  • Cyrillic (키릴 문자)
  • Devanagari (데바나가리 문자)
  • Greek (그리스 문자)
  • Hebrew (히브리 문자)
  • Korean (한글)
  • Thai (타이 문자)

IBM Plex글꼴에서 추후에 지원할 언어/문자 목록

  • 수학 기호 (Math)
  • 일본어 (Japanese)
  • 중국어 (Chinese)
  • 칸나다 문자 (Kannada)
  • 타밀 문자 (Tamil)

IBM Plex font: https://www.ibm.com/plex/

IBM Plex v5.0.0

New

IBM Plex Sans KR (Korean)

https://github.com/IBM/plex/releases/tag/v5.0.0

 

IBM/plex

The package of IBM’s typeface, IBM Plex. Contribute to IBM/plex development by creating an account on GitHub.

github.com

참고한 트윗글

https://twitter.com/leedotype/status/1271790768118620161

 

Leedotype on Twitter

“드디어 IBM Plex Sans 의 한글 버전이 출시되었습니다! 👏👏👏 https://t.co/KYUZ1YqYdm 에서 오픈소스 라이센스로 다운받으실 수 있습니다.”

twitter.com

 

Buy me a coffeeBuy me a coffee

이번 2020년 NIPA에서 진행하는 컨트리뷰톤LibreOffice 한국어 사용성 향상 및 공헌자 양성 프로젝트 멘토링을 위해서, Windows 빌드를 어떻게 할까 고민을 하였습니다.

고민 끝에, 이전에 새로 분양을 받은 HP 랩탑을 Windows를 쓰는 걸로 결론을 내렸습니다.

그래서, 새로 받은 HP 랩탑에 Windows 10설정을 하였고 이제 리브레오피스(LibreOffice)를 빌드하도록 진행을 하였습니다.

저는 여태껏 리눅스(Linux)와 맥OSX(Mac OSX)에서만 리브레오피스(LibreOffice)빌드를 하였습니다.
주로 리눅스와 맥을 사용하는 사람이라 보니, 윈도우(Windows)에서 리브레오피스 빌드는 아주 생소하게 느껴집니다.

(저, 참고로 첫직장에서 사회생활할때 SI용역으로 MFC 어플리케이션 개발하고, Windows API로 삽질하고, C#, ASP.NET으로 밥벌이한 사람입니다. 그때 Python으로도 개발을 해보고 Java로도 개발을 해보고... 오픈소스 활동한다고 해도 닥치는대로 개발해보는 잡부인생은 사회생활 첫시작부터 ㅎㅎ )

각설하고, 문서재단(The Document Foundation)의 Building LibreOffice on Windows with Cygwin and MSVC: Tips and Tricks 를 보고 리브레오피스(LibreOffice)빌드를 따라해보았습니다.

문서 읽고, 우선 제일 먼저 해야할일

  • MS사의 Visual Studio 2019 설치 (이 글을 쓰는 당시에 최신이 Visual Studio 2019)
  • 빌드를 위한 Windows 10 SDK 설치하기
  • Visual Studio와 Windows 10 SDK 설치후, Visual Studio 언어설정을 무조건 영어(English)로 설정하기
  • 자바(Java)를 빌드할 openJDK버전 설치 AdoptOpenJDK 설치함
  • Cygwin 설치 및 빌드 툴 설치

위의 4가지만 하면 그래도 큰 난관은 돌파합니다.

Linux환경을 모른다면 Cygwin에서 빌드하는건 정말 엄청 어려울듯한?

실제로 윈도우(Windows)환경에서 리브레오피스(LibreOffice)를 빌드해보니, 엄청난 시행착오를 겪어보며, 구글링(Googling)과 IRC문의로 문제를 해결하였습니다.

Cygwin에서 빌드 스크립트 (Visual Studio 2019의 컴파일로로 빌드하도록 설정하였습니다.

 /cygdrive/c/sources/libo-core/autogen.sh \
               --with-external-tar=/cygdrive/c/sources/lo-externalsrc \
               --with-junit=/cygdrive/c/sources/junit-4.10.jar \
               --with-ant-home=/cygdrive/c/sources/apache-ant-1.9.5 \
               --enable-pch --disable-ccache \
               --with-locales=ko -
               -with-vendor=me \
               --with-lang=ko \
               --enable-dbgutil \
                --disable-skia \
               --with-jdk-home="/cygdrive/c/Program Files/AdoptOpenJDK/jdk-14.0.1.7-openj9/" \
               --enable-64-bit \
               --with-visual-studio=2019 \
               --disable-odk

빌드 중 에러, Skia는 Clang(llvm)이 필요하나 현재 cygwin에서 설치를 했으나 인식을 못하는듯
그래서 빌드시 skia 미지원으로 빌드하도록 변경

checking whether to build Skia... yes checking for clang-cl... no configure: error: Clang compiler not found. The Skia library needs to be built using Clang. Error running configure at /cygdrive/c/sources/libo-core/autogen.sh line 299.

안티바이러스 끄기를 해야 빌드 설정이 진행되더군요.

cat: 'C:/sources/libo-core/eicar': Permission denied configure: error: Exclude the build and source directories associated with LibreOffice in the following Antivirus software: *Windows Defender Error running configure at /cygdrive/c/sources/libo-core/autogen.sh line 299.
Windows10에서 안티바이러스 끄기는 업데이트 및 보안선택 -> Windows 보안선택 -> 바이러스 및 위협방지 클릭

실시간 감지를 끕니다. 그래야 빌드를 시도할 수 있습니다.

빌드 설정이 끝나면 아래와 같은 메세지를 확인할 수 있습니다.

To build, run:
C:/cygwin64/opt/lo/bin/make

To view some help, run:
C:/cygwin64/opt/lo/bin/make help

이제, 아래의 명령어로 빌드를 진행해봅니다

$ /opt/lo/bin/make clean gb_COLOR=1

이후, 빌드를 하려니 또 오류가 나오더군요.

아래 오류를 보니, 왜 빌드가 안되지 하며 이해가 안되어 머리가 아팠습니다.
msvcprtd.lib(MSVCP100D.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

구글링을 한 결과 아래의 글을 확인하였습니다.

MSVC 2015's broken static initializer_list causing build failure

http://document-foundation-mail-archive.969070.n3.nabble.com/MSVC-2015-s-broken-static-initializer-list-causing-build-failure-td4202928.html

 

Dev - MSVC 2015's broken static initializer_list causing build failure

On Sun, 2017-02-19 at 20:53 +0000, Luke Benes wrote: > config_host.mk: > export UCRTSDKDIR=C:/PROGRA~2/WI3CF2~1/10/ > export UCRTVERSION=10.0.10240.0 > > Looking at the creation date of that folder, it matches the creation >  date of C:\Program Files (x86

document-foundation-mail-archive.969070.n3.nabble.com

확인 결과, Windows10 OS에 Visual Studio 2019 설치 및 cygwin으로 빌드 설정만 하였지, 정작 빌드를 위한 Windows 10 SDK 가 설치가 되지 않아 생기던 버그더군요.

아래 링크로 Windows 10 SDK를 설치합니다

https://developer.microsoft.com/ko-kr/windows/downloads/windows-10-sdk/

 

Windows 10 SDK - Windows 앱 개발

Windows 10 SDK Windows 10, 버전 2004용 Windows 10 SDK(10.0.19041.0)는 Windows 10 앱을 빌드하는 데 필요한 최신 헤더, 라이브러리, 메타데이터 및 도구를 제공합니다. 이 SDK를 사용하여 Windows 10, 버전 2004 및 이�

developer.microsoft.com

설치가 완료되면 이제 제대로 빌드가 진행됩니다.

리브레오피스(LibreOffice)빌드하는데 꽤 시간 걸리니, 자기전에 돌리는 것이 속이 편합니다.

만약에, Visual Studio와 Windows 10 SDK 설치후, Visual Studio 언어설정을 무조건 영어(English)로 설정하기를 하지 않으면 nss 라이브러리 컴파일하다 오류가 납니다.

만약, cl.exe를 실행하여 한글이 나온다고 하면

C:\Users\****>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe"
Microsoft (R) C/C++ 최적화 컴파일러 버전 19.26.28806(x64)
Copyright (c) Microsoft Corporation. All rights reserved.

사용법: cl [ option... ] filename... [ /link linkoption... ]

다음과 같이, Visual Studio의 언어설정을 영어(English)로 바꿔서, cl.exe가 영어로 나오도록 변경 한후에 LibreOffice빌드를 해야합니다. 

C:\Users\****>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe"
Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

 

참고로, Visual Studio의 언어설정을 영어(English)로 바꾸려면, Visual Studio Installer를 실행 후 "영어"언어팩을 설치해야합니다.

아래는 러시아어(Russian Language)에서 Visual Studio 언어팩 설정 화면입니다.

https://imgur.com/PnNB7Li

 

Imgur

 

imgur.com

 

위의 빌드 오류 이슈에 대해서 LibreOffice의 #libreoffice-dev채널에서 아래의 링크를 이용하여 문의를 하였습니다.

Friday, June 12th, 2020
Hello 12:30 AM I have a question for windows build. 12:31 AM Now, I build LibreOffice on Windows. After setting building environment (Cygwin). During building, It shows error message 12:31 AM [coreconf/rules.mk:44: lib] Error 2 12:31 AM out\nssutil3.lib □□□̺귯□□ □□ out\nssutil3.exp 12:32 AM [C:/sources/libo-core/external/nss/ExternalProject_nss.mk:21: C:/build/workdir/ExternalProject/nss/build] Error 1
mst___: please use pastebin

dhsung: https://pastebin.com/7s2GXkxL
https://pastebin.com/7s2GXkxL

 

[Bash] LibreOffice build error on Windows & Cygwin - Pastebin.com

Not a member of Pastebin yet? Sign Up, it unlocks many cool features! /cygdrive/c/build $   /cygdrive/c/sources/libo-core/autogen.sh --with-external-tar=/cygdrive/c/sources/lo-externalsrc  --with-junit=/cygdrive/c/sources/junit-4.10.jar  --with-ant-home

pastebin.com

mst___: it looks like when building nss, /FS parameter is missing in the command line for pkix_pl_pk11certstore.c
dhsung: Hmm, How to add the /FS parameter at autogen.sh?
mst___: can you pastebin the command line that invokes cl.exe on pkix_pl_pk11certstore.c ?
https://pastebin.com/nSx0sKkw

 

[Bash] LibreOffice compile error msg about nss build - Pastebin.com

 

pastebin.com

mst___: ah... probably the cause is the syntax error in /usr/bin/sh: -c: line 0: `expr Microsoft(R) \> 1600 \| Microsoft(R) = 1600 \& C/C++ \>= 40219'

dhsung: hmm, I checked the env, It shows LANG=ko_KR.UTF-8@cjknarrow

mikekaganski: out of interest: what does 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe' output for you in the console? 1:21 AM you might want to file a bug against NSS with that information ;-) 1:21 AM — mikekaganski used his path to cl.exe, naturally dhsung_ might need to adjust

cl.exe (Korean)

https://pastebin.com/XNRVYfiy

 

cl.exe (Korean version) - Pastebin.com

Not a member of Pastebin yet? Sign Up, it unlocks many cool features! C:\Users\dhsung>"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe" Microsoft (R) C/C++ 최적화 컴파일러 버전 19.26.2

pastebin.com

— mikekaganski has "Microsoft (R) C/C++ Optimizing Compiler Version 19.26.28806 for x64" in the first line
mikekaganski: anyway, I'd suggest you to re-run VS installer, and only select en-US UI 1:42 AM no need to reinstall 1:42 AM just run its installer and modify install set 1:44 AM dhsung_: https://imgur.com/PnNB7Li
https://imgur.com/PnNB7Li

 

Imgur

 

imgur.com

참고: nss library

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Building

 

Building NSS

This page has detailed information on how to build NSS. Because NSS is a cross-platform library that builds on many different platforms and has many options, it may be complex to build. Please read these instructions carefully before attempting to build.

developer.mozilla.org

리브레오피스에서 윈도우(Windows)환경의 Visual Studio 2019에서 빌드 하기 

https://wiki.documentfoundation.org/Development/BuildingOnWindows#Visual_Studio_2019

 

Building LibreOffice on Windows with Cygwin and MSVC: Tips and Tricks - The Document Foundation Wiki

Build dependencies Before you can start hacking LibreOffice on Windows, you need to follow these instructions to set up a build environment. Do also read our generic building hints. Install Visual Studio You need the Microsoft compiler/development suite Vi

wiki.documentfoundation.org

아래 영어에 적힌 내용처럼, cygwin 쉘에서는 인코딩 집합과 맞지 않아 빌드 오류인 경우가 많으니, 리브레오피스를 윈도우환경의 cygwin에서 빌드시, Visual Studio설정을 영어로 된 UI로 설정을 해야 한다고 나와 있습니다.
Note: Visual Studio command-line tools use system OEM codepage to output messages to console, when corresponding UI language is installed as part of Visual Studio installation. The OEM codepage on Windows depends on system locale defined using "Language for non-Unicode programs" in intl.cpl applet (description of the setting), and is often incompatible with encoding set in cygwin shell (typically UTF-8). This garbles the output from the tools in the build log. You might want to make sure that you only install English UI when installing Visual Studio to avoid that problem.

빌드가 완료되면 아래와 같은 메세지가 뜹니다.

[RDB] services
[BIN] sc
[MOD] sc
[BIN] postprocess
[GAL] backgrounds
[GAL] sounds
[MOD] postprocess
[ULF] C:/build/workdir/Gallery/sounds/sounds.ulf
[STR] sounds/sounds
[PKG] Gallery/sounds
[ULF] C:/build/workdir/Gallery/backgrounds/backgrounds.ulf
[STR] backgrounds/backgrounds
[PKG] Gallery/backgrounds
[BIN] extras
[MOD] extras
[MOD] libreoffice
[BIN] top level modules: libreoffice
[ALL] top level modules: build-non-l10n-only build-l10n-only

리브레오피스(LibreOffice) 윈도우 빌드가 완료되었으니 실행을 해봐야겠지요?

아래의 명령어로 실행을 해봅니다!

$ ./instdir/program/soffice.exe

리브레오피스(LibreOffice) 실행을 하면 아래와 같은 시작 스플레쉬(Splash) 화면이 나오면서 프로그램이 로딩됩니다.

리브레오피스(LibreOffice) 로딩이 되며 시작 스플레시가 꺼지면 다음과 같이 시작화면이 나옵니다.

리브레오피스(LibreOffice)의 정보를 확인하면 아래와 같이 나타납니다.

그리고, 한글(HWP)와 MS워드 격인 리브레오피스(LibreOffice)의 라이터(Writer)를 실행해보았습니다.

글이 제대로 써지는지 확인하였습니다.

엄청난 시행착오를 겪은 후에, 결국은 빌드 및 실행을 해보았습니다.

이제부터, 소프트웨어 번역(飜譯, Translation)와 Wiki 번역 (飜譯, Translation)을 해봐야겠습니다.

Buy me a coffeeBuy me a coffee

이번에 Python을 이용하여 LibreOffice의 Unittest 소스코드에 공헌을 해보았습니다.

출처:

관련 링크:

링크의 Cppunit 소스코드에 보면 입력된 값에 대해서 이 값이 기대된 값(Expected value)인지 검사하는 로직이 있습니다.

이 단위테스트에서 주석과 결과를 넣어야할텐데, 문자열의 유니코드 코드포인트값을 어떻게 빠르게 뽑아낼까 고민을 하다 역시 Python이 있었지 하면서 Python으로 결과값을 뽑아내서 cppunittest 소스코드를 수정 작성하였습니다.

        // DBNum1 -> NatNum4: Korean lower case characters
        // 一億二千三百四十五万六千七百八十九
        sExpected = u"\u4e00\u5104\u4e8c\u5343\u4e09\u767e\u56db\u5341\u4e94\u4e07\u516d\u5343\u4e03\u767e\u516b\u5341\u4e5d ";
        sCode = "[NatNum4][$-0412]General\\ ";
        checkPreviewString(aFormatter, sCode, 123456789, eLang, sExpected);
        sCode = "[DBNum1][$-0412]General\\ ";
        checkPreviewString(aFormatter, sCode, 123456789, eLang, sExpected);

아래는, 주석에 적은 문자열를 Python을 이용하여 Unicode Codepoint로 변환하는 예제입니다.

Python 3.8.3 (default, May 27 2020, 20:54:22) 
[Clang 11.0.3 (clang-1103.0.32.59)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> "一億二千三百四十五万六千七百八十九".encode("unicode_escape")
b'\\u4e00\\u5104\\u4e8c\\u5343\\u4e09\\u767e\\u56db\\u5341\\u4e94\\u4e07\\u516d\\u5343\\u4e03\\u767e\\u516b\\u5341\\u4e5d'
>>> "壹億貳阡參佰四拾伍萬六阡七佰八拾九".encode("unicode_escape")
b'\\u58f9\\u5104\\u8cb3\\u9621\\u53c3\\u4f70\\u56db\\u62fe\\u4f0d\\u842c\\u516d\\u9621\\u4e03\\u4f70\\u516b\\u62fe\\u4e5d'
>>> "1억2천3백4십5만6천7백8십9".encode("unicode_escape")
b'\\uff11\\uc5b5\\uff12\\ucc9c\\uff13\\ubc31\\uff14\\uc2ed\\uff15\\ub9cc\\uff16\\ucc9c\\uff17\\ubc31\\uff18\\uc2ed\\uff19'
>>> "일억이천삼백사십오만육천칠백팔십구".encode("unicode_escape")
b'\\uc77c\\uc5b5\\uc774\\ucc9c\\uc0bc\\ubc31\\uc0ac\\uc2ed\\uc624\\ub9cc\\uc721\\ucc9c\\uce60\\ubc31\\ud314\\uc2ed\\uad6c'
>>> 

Python의 결과값을 이용하여 Cppunittest의 결과값 비교를 하는데 유용하여 사용했습니다.

Python이 아니였으면 일본사람인 小笠原徳彦(Naruhiko Ogasawara)님과 협업으로 리브레오피스 소스코드 수정하는데 많이 지연이 되었을 것 같아요.

 

ps. 파이썬(Python)같이 생산성 빠른 언어를 익혀두면 언젠간 쓸 일이 생긴다.

ps2. 참고할만한 글

https://towardsdatascience.com/a-guide-to-unicode-utf-8-and-strings-in-python-757a232db95c

A Guide to Unicode, UTF-8 and Strings in Python

Strings are one of the most common data types in Python. This guide will help you master Unicode, UTF-8 and strings in general.

towardsdatascience.com

 

Buy me a coffeeBuy me a coffee

어느날, 여자친구가 사용하지 않은 노트북이 있다고 공짜로 가지겠는가는 이야기를 들었습니다.

이게 웬 떡인가? 이런 심리가 발동되어 노트북을 공짜로 받겠다고 했습니다.

노트북을 공짜로 받아보니 HP사에서 나온 2013년도에 생산된 Envy-14인치 i5랩탑이였습니다. CPU는 i5라 지금도 사용하는데 딱히 나쁘지 않은데, LCD패널이 좀 아쉽고, HDD를 쓴다길래 흠 좀 고치면 되겠군이란 생각을 하였습니다.

 

받고 나서 노트북을 켜보니... 안켜집니다. 여친 말로는 배터리가 이상한지 전원 연결을 하지 않으면 컴퓨터가 안켜진다고 합니다.

배터리가 고장났으니 전원연결을 한 후, 노트북 켜면 부팅이 안된다고 합니다.

확인해보니 BIOS설정이 잘못된걸 확인. 그래서 BIOS설정 수정 및 가상화설정에 대해서 활성화를 하였습니다 (이건 제가 WSL2, Docker를 사용하려고 함)

그리고, 내부를 뜯어보니 배터리는 부풀어올랐고, 얼른 교체를 하지 않으면 터질것 같더군요.

시급한 것은 이제 켜지지 않고 충전도 안되는 배터리 교체를 하였습니다. (노트북을 받고 나서 계속 전원 연결로만 사용하였습니다.
배터리를 빨리 받기 위해서, 중국에서 배송하는 알리익스프레스 대신 한국의 대형쇼핑몰 11번가에서 2013년도에 생산된 HP envy14인치용 배터리 부품번호를 보고 주문하였습니다.

아래는, 대형쇼핑몰  11번가에서 주문한 HP envy14 랩탑 배터리부품입니다. 해외 주문할시 코로나 시국으로 배달 속도가 느리기 때문에, 국내 창고에 굴러다니는 재고 배터리를 찾아서 주문하였습니다 

 

잡았다 요놈. HP Envy14인치용 배터리
위: 상당히 부풀어오른 배터리, 아래: 새로 구입한 배터리

 

 

이제 배터리를 교체하고, 뭘 바꿀지 확인을 해보았습니다.

배터리 교체하고 나서 쓱 훑어보니, 램은 4GB로 꽂혀있었고, 무선랜카드는  5Ghz를 지원하지 않은 싸구려 센트리노카드였고, mSATA를 지원하는 랩탑인데 왜 HDD를 넣었는지 이해를 못하였을 정도로 원가 절감을 위해 CPU만 좋은걸 넣었고, 나머지는 그 당시에도 성능이 느린 부품을 넣어서 팔았습니다 (부들부들 HP요놈)

다행히, HP envy랩탑 내부를 뜯어보니 요즘 애플이 시작하여 다른 제조사가 따라하는 납땜하여 아예 교체 못하는 시스템이 아니라서 차근차근 부품 교체 하면 지금도 간단한 작업 및 제가 주로 이용하는 작업을 충분히 할수 있을 정도일것 같더군요.

배터리를 교체하고 난후, DDR3램 교체를 진행하였습니다.
기존엔 4Gb 하이닉스 램이 탑재되었기 때문에, 잠시 예전에 삼성 노트북에서 사용하던 4Gb램을 임시로 꽂아서 총 8Gb를 사용하고 있었습니다. 그러나 빌드 작업을 할 것이라 이제 삼성 8Gb램 2개를 한국의 인터넷 쇼핑몰 11번가에서 주문하여, 램을 교체하였습니다. 그래서 이제 노트북에서 램16Gb를 사용하게 되었습니다.

 

 



그리고, 하드디스크가 노후화되어 수명이 오래 가지 못하고 띡소리가 나기 시작하였고, 5400rpm 하드이기 때문에 느리기 때문에, 집에서 리눅스 설치하다 용량 교체로 사용하지않고 잠시 굴러다니던 SSD로 교체하였습니다.

 

 

제가 맥북프로(MacOSX)와 2011년도에 생산된 Intel i7 2세대 샌디브릿지 삼성 랩탑(Linux)를 사용하기 있기때문에 윈도우OS를 탑재한 운영체제가 없었습니다.

그래서, 이 HP노트북은 윈도우를 사용하는 머신으로 이용하게 되었습니다.


다음엔, 이 노트북에 사용하는 무선랜카드가 5Ghz를 지원 못하는 싸구려 샌트리노 랜카드(Intrl Centrino Wireless-N 2230)를 붙여놓았더군요. 그래서, 알리익스프레스에서 Intel Dual Band Wireless-AC 7250을 주문하였습니다.

 

 


이제야, 2020년에 쓸만한 4세대 하스웰 i5 랩탑을 구성하였습니다.(무선랜카드만 도착하면 진짜 쓸만해질듯)
이제 제대로 된 윈도우 머신을 여친에게 공짜로 받아 부품 교체하여 쓰니깐 기분 좋네요. 

(아직 무선랜카드가 도착하지 않음. 그러나 무선랜 카드 교체하려니 고난이도임을 예상... 그러나 난 할수 있을거야 설마 전선 찢어버릴려나..)

 문제의 무선랜카드가 케이블 아래에 양면테이프로 딱 붙어 있음 ㅠㅠ

ps. 제가 사용하는 맥북프로(MacBookPro 2013 Late)와 비슷한 시기에 나온 CPU를 사용하고 있기때문에, HP랩탑의 부품(HDD, 램, 무선랜)을 바꾸면 맥북프로와 거의 비슷한 성능을 낼것 같습니다.

Buy me a coffeeBuy me a coffee

MS Windows에서 Visual Studio(비주얼 스튜디오)로 리브레오피스(LibreOffice) 개발하기 동영상

Developing LibreOffice in Visual Studio

https://www.youtube.com/watch?v=Xn3CtIrMpIA

 

Buy me a coffeeBuy me a coffee

맥OSX(Mac OSX)에서 리브레오피스(LibreOffice)를 빌드 후, 디버깅을 하려면 gdb대신 lldb를 이용해야 합니다.

맥에서 리브레오피스(LibreOffice) 빌드후, 새로운 아이디어가 생각이 나서 소스 수정 후 디버깅을 해보았습니다.

make debugrun

빌드를 하고 gdb로 디버깅을 하려고 했더니 어 gdb명령어가 안먹네??

확인결과, MacOSX에서는 llvm으로 빌드하기 때문에 gdb대신 lldb를 사용해야합니다.

https://wiki.documentfoundation.org/Development/How_to_debug#Debugging_with_lldb

 

How to debug - The Document Foundation Wiki

The Document Foundation Wiki Debugging options You need to enable debugging support to do any practical interactive debugging. You can enable it for the entire build with: ./autogen.sh --enable-debug or ./autogen.sh --enable-dbgutil If you have done a non-

wiki.documentfoundation.org

 

저는 대학교때 배운 gdb명령어로 디버깅을 하려고 했더니, lldb가 손에 익지 않아 시행착오를 많이 겪게 되네요

아래는 llvm을 밀고 있는 Apple사에서 제공하는 gdb와 lldb의 비교 링크입니다.

https://developer.apple.com/library/archive/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-command-examples.html#//apple_ref/doc/uid/TP40012917-CH3-SW1

 

GDB and LLDB Command Examples

GDB and LLDB Command Examples The tables in this chapter list commonly used GDB commands and present equivalent LLDB commands and alternative forms. Also listed are the built-in GDB compatibility aliases in LLDB. Notice that full LLDB command names can be

developer.apple.com

아래는 참고할만한 lldb디버깅 기술 소개 링크입니다. 

https://www.letmecompile.com/xcode-lldb-%EB%94%94%EB%B2%84%EA%B9%85-%ED%85%8C%ED%81%AC%EB%8B%89/

 

Xcode LLDB 디버깅 테크닉

Xcode에 기본으로 내장되어있는 디버거(debugger)인 LLDB는 기존에 가장 많이 사용되던 gdb보다 많은 유용한 기능들을 갖고있다. LLDB 명령어 분석기에는 파이썬(Python) 인터프리터가 내장되어있어서 scr

www.letmecompile.com

아래는 lldb로 디버깅(Debugging)중인 화면입니다. 

 

ps. Apple사에서 제공하는 LLDB와 Xcode에 대한 글 

https://developer.apple.com/library/archive/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/Introduction.html#//apple_ref/doc/uid/TP40012917-CH1-SW1

 

About LLDB and Xcode

About LLDB and Xcode With the release of Xcode 5, the LLDB debugger becomes the foundation for the debugging experience on OS X. LLDB is Apple’s “from the ground up” replacement for GDB, developed in close coordination with the LLVM compilers to brin

developer.apple.com

 

Buy me a coffeeBuy me a coffee

드디어, 2020년 6월부터 홍콩(Hong Kong, 香港)에서 애플페이에 홍콩 교통카드인 옥토퍼스카드(八達通, Octopus)등록이 가능해졌습니다.



사용 프로세스는 일본 스이카(Suica)랑 비슷하게 실물카드를 등록하면 애플페이에서만 사용할 수 있으며, 등록된 실물카드는 사용을 못한다고 합니다.

Apple 홍콩 공식페이지의 Apple Pay 八達通소개링크: https://www.apple.com/hk/apple-pay/octopus/

Apple Pay - 八達通

Apple Pay 現已支援八達通,從交通到購物,體驗一新。無論搭乘鐵路、巴士和渡輪,以至購物付款,直接以你的 iPhone 或 Apple Watch 一嘟就得,暢快便捷,前所未有。

www.apple.com

Apple Hong Kong 영문 공식페이지의 Apple Pay Octopus 소개링크:

https://www.apple.com/hk/en/apple-pay/octopus/

Apple Pay - Octopus

Apple Pay now supports Octopus card, delivering a new generation of public transport and retail purchase experiences. Now it’s easier than ever to ride trains, buses, and ferries and shop with just your iPhone or Apple Watch. Ride and buy. All with one e

www.apple.com

Octopus공식 애플페이에 옥토퍼스카드 등록 사용 공식 문서가 떴습니다.

 https://www.octopus.com.hk/en/consumer/mobile-payment/apple-pay/about/index.html 

Your iPhone or Apple Watch is now your Octopus

Operating under the Stored Value Facilities Licence, Octopus provides diversified offline and online Octopus payment services to meet customers’ different payment needs.

www.octopus.com.hk

 

如何加八達通卡於錢包 How to add Octopus Card in Apple Pay

 https://www.youtube.com/watch?v=ihNUME5k52w

 

Buy me a coffeeBuy me a coffee

+ Recent posts