From cf38879fe89357f1aebd9aff9e86d3df01f46a4d Mon Sep 17 00:00:00 2001 From: Christoph Cullmann Date: Mon, 13 May 2024 21:45:11 +0200 Subject: sort posts --- content/posts/cmake-meson-compcert.md | 39 ----------- content/posts/cmake-meson-compcert/index.md | 39 +++++++++++ content/posts/cpp-standard-version-mix-up.md | 42 ------------ content/posts/cpp-standard-version-mix-up/index.md | 42 ++++++++++++ content/posts/farewell-telegram-hello-signal.md | 42 ------------ .../posts/farewell-telegram-hello-signal/index.md | 42 ++++++++++++ content/posts/hugo-extended-centos-7.md | 26 -------- content/posts/hugo-extended-centos-7/index.md | 26 ++++++++ content/posts/kate-cpp-developer-survey.md | 28 -------- content/posts/kate-cpp-developer-survey/index.md | 28 ++++++++ .../posts/kate-language-server-protocol-client.md | 26 -------- .../kate-language-server-protocol-client/index.md | 26 ++++++++ content/posts/kate-lsp-client-progress.md | 28 -------- content/posts/kate-lsp-client-progress/index.md | 28 ++++++++ content/posts/kde-ev-wants-you.md | 21 ------ content/posts/kde-ev-wants-you/index.md | 21 ++++++ content/posts/kf6-release-plan.md | 43 ------------ content/posts/kf6-release-plan/index.md | 43 ++++++++++++ .../ktexteditor-kate-bugs-help-appreciated.md | 34 ---------- .../index.md | 34 ++++++++++ .../ktexteditor-kate-bugs-scratch-your-own-itch.md | 51 --------------- .../index.md | 51 +++++++++++++++ content/posts/manjaro-with-kde-on-a-macbook-pro.md | 76 ---------------------- .../manjaro-with-kde-on-a-macbook-pro/index.md | 76 ++++++++++++++++++++++ content/posts/new-website.md | 17 ----- content/posts/new-website/index.md | 17 +++++ content/posts/privacy-and-hugo-themes.md | 25 ------- content/posts/privacy-and-hugo-themes/index.md | 25 +++++++ .../qt-creator-4-9-uses-ksyntaxhighlighting.md | 29 --------- .../index.md | 29 +++++++++ content/posts/removing-files-from-git-history.md | 41 ------------ .../posts/removing-files-from-git-history/index.md | 41 ++++++++++++ content/posts/webserver-transition.md | 59 ----------------- content/posts/webserver-transition/index.md | 59 +++++++++++++++++ 34 files changed, 627 insertions(+), 627 deletions(-) delete mode 100644 content/posts/cmake-meson-compcert.md create mode 100644 content/posts/cmake-meson-compcert/index.md delete mode 100644 content/posts/cpp-standard-version-mix-up.md create mode 100644 content/posts/cpp-standard-version-mix-up/index.md delete mode 100644 content/posts/farewell-telegram-hello-signal.md create mode 100644 content/posts/farewell-telegram-hello-signal/index.md delete mode 100644 content/posts/hugo-extended-centos-7.md create mode 100644 content/posts/hugo-extended-centos-7/index.md delete mode 100644 content/posts/kate-cpp-developer-survey.md create mode 100644 content/posts/kate-cpp-developer-survey/index.md delete mode 100644 content/posts/kate-language-server-protocol-client.md create mode 100644 content/posts/kate-language-server-protocol-client/index.md delete mode 100644 content/posts/kate-lsp-client-progress.md create mode 100644 content/posts/kate-lsp-client-progress/index.md delete mode 100644 content/posts/kde-ev-wants-you.md create mode 100644 content/posts/kde-ev-wants-you/index.md delete mode 100644 content/posts/kf6-release-plan.md create mode 100644 content/posts/kf6-release-plan/index.md delete mode 100644 content/posts/ktexteditor-kate-bugs-help-appreciated.md create mode 100644 content/posts/ktexteditor-kate-bugs-help-appreciated/index.md delete mode 100644 content/posts/ktexteditor-kate-bugs-scratch-your-own-itch.md create mode 100644 content/posts/ktexteditor-kate-bugs-scratch-your-own-itch/index.md delete mode 100644 content/posts/manjaro-with-kde-on-a-macbook-pro.md create mode 100644 content/posts/manjaro-with-kde-on-a-macbook-pro/index.md delete mode 100644 content/posts/new-website.md create mode 100644 content/posts/new-website/index.md delete mode 100644 content/posts/privacy-and-hugo-themes.md create mode 100644 content/posts/privacy-and-hugo-themes/index.md delete mode 100644 content/posts/qt-creator-4-9-uses-ksyntaxhighlighting.md create mode 100644 content/posts/qt-creator-4-9-uses-ksyntaxhighlighting/index.md delete mode 100644 content/posts/removing-files-from-git-history.md create mode 100644 content/posts/removing-files-from-git-history/index.md delete mode 100644 content/posts/webserver-transition.md create mode 100644 content/posts/webserver-transition/index.md (limited to 'content') diff --git a/content/posts/cmake-meson-compcert.md b/content/posts/cmake-meson-compcert.md deleted file mode 100644 index 371fe27..0000000 --- a/content/posts/cmake-meson-compcert.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "CMake & Meson & CompCert" -date: 2020-06-07T16:13:00+02:00 -draft: false -categories: [c, development] -tags: [c] -url: /posts/cmake-meson-compcert/ -author: "Christoph Cullmann" ---- - -I tried to compile the [Picolibc](https://github.com/keith-packard/picolibc) that uses the [Meson build system](https://mesonbuild.com/) with [CompCert](http://compcert.inria.fr/). - -The CompCert install I tried uses the GNU/GCC toolchain for preprocessing and linking. -That makes the compiler relatively compatible to a GCC, beside that not all command line options are supported. - -I was used to [CMake](https://www.cmake.org) projects and there it is normally enough to just set CC=ccomp and you are ready and set (at least if you use the GNU/GCC toolchain). -As long as you don't use special flags in your project, that will just work. - -The Picolibc was the first Meson based project I encountered. - -There setting CC to ccomp just leads to - -{{< highlight bash >}} - meson.build:1:0: ERROR: Unknown compiler(s): [['ccomp']] -{{< / highlight >}} - -I did assume that the project won't compile & link without adjustments, as CompCert doesn't support the full range of command line options like GCC as mentioned above nor the full GNU extensions for C. -But that it directly ends at the compiler initialization in the build system itself was astonishing. - -I searched a bit in the internet and it seems, if I really want to get this working, I actually need to patch Meson itself :/ -(see how to add a new compiler [here](https://github.com/mesonbuild/meson/commit/74602928100394f6129e064f8e0bfe6c9e08c9d2#diff-1eaa302b42bbbba32f1c6d474d08397e)) - -At least I found no other solution, actually, I found no real solution for the above error message at all and the code looks like you need to manually add compilers anyways. - -Given I want to spend work on getting the C library to compile and not fix a build system, it seems easier to go with the [newlib](https://github.com/mirror/newlib-cygwin) that uses the old autotools, -at least for them the compile starts at all with my CC environment variable and you get to places of interest to fix. - -This means for my use case, with a non-standard compiler, I can not see how Meson is an improvement over other existing stuff like CMake or even autotools. -But perhaps this area will improve in the future. diff --git a/content/posts/cmake-meson-compcert/index.md b/content/posts/cmake-meson-compcert/index.md new file mode 100644 index 0000000..371fe27 --- /dev/null +++ b/content/posts/cmake-meson-compcert/index.md @@ -0,0 +1,39 @@ +--- +title: "CMake & Meson & CompCert" +date: 2020-06-07T16:13:00+02:00 +draft: false +categories: [c, development] +tags: [c] +url: /posts/cmake-meson-compcert/ +author: "Christoph Cullmann" +--- + +I tried to compile the [Picolibc](https://github.com/keith-packard/picolibc) that uses the [Meson build system](https://mesonbuild.com/) with [CompCert](http://compcert.inria.fr/). + +The CompCert install I tried uses the GNU/GCC toolchain for preprocessing and linking. +That makes the compiler relatively compatible to a GCC, beside that not all command line options are supported. + +I was used to [CMake](https://www.cmake.org) projects and there it is normally enough to just set CC=ccomp and you are ready and set (at least if you use the GNU/GCC toolchain). +As long as you don't use special flags in your project, that will just work. + +The Picolibc was the first Meson based project I encountered. + +There setting CC to ccomp just leads to + +{{< highlight bash >}} + meson.build:1:0: ERROR: Unknown compiler(s): [['ccomp']] +{{< / highlight >}} + +I did assume that the project won't compile & link without adjustments, as CompCert doesn't support the full range of command line options like GCC as mentioned above nor the full GNU extensions for C. +But that it directly ends at the compiler initialization in the build system itself was astonishing. + +I searched a bit in the internet and it seems, if I really want to get this working, I actually need to patch Meson itself :/ +(see how to add a new compiler [here](https://github.com/mesonbuild/meson/commit/74602928100394f6129e064f8e0bfe6c9e08c9d2#diff-1eaa302b42bbbba32f1c6d474d08397e)) + +At least I found no other solution, actually, I found no real solution for the above error message at all and the code looks like you need to manually add compilers anyways. + +Given I want to spend work on getting the C library to compile and not fix a build system, it seems easier to go with the [newlib](https://github.com/mirror/newlib-cygwin) that uses the old autotools, +at least for them the compile starts at all with my CC environment variable and you get to places of interest to fix. + +This means for my use case, with a non-standard compiler, I can not see how Meson is an improvement over other existing stuff like CMake or even autotools. +But perhaps this area will improve in the future. diff --git a/content/posts/cpp-standard-version-mix-up.md b/content/posts/cpp-standard-version-mix-up.md deleted file mode 100644 index c6b8802..0000000 --- a/content/posts/cpp-standard-version-mix-up.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "C++ Standard Version Mix-up" -date: 2019-12-21T16:09:00+02:00 -draft: false -categories: [cpp, development] -tags: [cpp] -url: /posts/cpp-standard-version-mix-up/ -author: "Christoph Cullmann" ---- - -At [work](https://www.absint.com/) we use the LLVM/clang libraries for pre-processing and parsing C/C++ stuff. - -During some experimenting with the current master version of these libraries, I stumbled on unexpected crashes inside our unit-tests on Windows. - -We work with MSVC 2019 on Windows and all worked fine with LLVM 9.x, but with master, close to all my tests did now segfault in aligned_free. - -I first thought that might be some current regression in LLVM master, but after tracing it back to having DenseSet/Map crashing during destruction, this seemed unlikely. - -On further investigation, the fault is really hilarious: We compiled the LLVM libraries with the default language standard as set there in the CMake tooling: C++14. - -On the other side, we compiled our own tools that use these libraries with C++17. - -Some months ago, the implementation of DenseMap got improved to use the [allocate_buffer/deallocate_buffer](https://github.com/llvm/llvm-project/blob/master/llvm/include/llvm/Support/Compiler.h) functions to use (if possible) aligned allocation. - -Unfortunately, this means, during the compilation of the library, the checks there ensure it doesn't use these code paths, on the other side, during compilation of our tools, it does, as the allocation functions are fully inline in the header including the feature checks. - -For operating systems != Windows, this doesn't hurt that much, as you can use the normal free for stuff allocated with the aligned variants (and vice versa). - -Unfortunately (or fortunately, to detect this screw-up), this doesn't hold for the MSVC run-time on Windows. - -If one uses a consistent C++ standard version for the compilation of the whole tool-chain, all is fine. - -Therefore, if somebody stumbles on the same kind of crashes, perhaps this blog post can avoid some longer bug hunting. - -A usual crash backtrace of such an error would look like: - -{{< highlight c >}} -0x00000000778ca12f - RtlFreeHeap -0x000007fef90ba8b0 - free_base -0x000007fef910ffe2 - aligned_free -0x0000000140113fa7 - llvm::TypeFinder::~TypeFinder -{{< / highlight >}} diff --git a/content/posts/cpp-standard-version-mix-up/index.md b/content/posts/cpp-standard-version-mix-up/index.md new file mode 100644 index 0000000..c6b8802 --- /dev/null +++ b/content/posts/cpp-standard-version-mix-up/index.md @@ -0,0 +1,42 @@ +--- +title: "C++ Standard Version Mix-up" +date: 2019-12-21T16:09:00+02:00 +draft: false +categories: [cpp, development] +tags: [cpp] +url: /posts/cpp-standard-version-mix-up/ +author: "Christoph Cullmann" +--- + +At [work](https://www.absint.com/) we use the LLVM/clang libraries for pre-processing and parsing C/C++ stuff. + +During some experimenting with the current master version of these libraries, I stumbled on unexpected crashes inside our unit-tests on Windows. + +We work with MSVC 2019 on Windows and all worked fine with LLVM 9.x, but with master, close to all my tests did now segfault in aligned_free. + +I first thought that might be some current regression in LLVM master, but after tracing it back to having DenseSet/Map crashing during destruction, this seemed unlikely. + +On further investigation, the fault is really hilarious: We compiled the LLVM libraries with the default language standard as set there in the CMake tooling: C++14. + +On the other side, we compiled our own tools that use these libraries with C++17. + +Some months ago, the implementation of DenseMap got improved to use the [allocate_buffer/deallocate_buffer](https://github.com/llvm/llvm-project/blob/master/llvm/include/llvm/Support/Compiler.h) functions to use (if possible) aligned allocation. + +Unfortunately, this means, during the compilation of the library, the checks there ensure it doesn't use these code paths, on the other side, during compilation of our tools, it does, as the allocation functions are fully inline in the header including the feature checks. + +For operating systems != Windows, this doesn't hurt that much, as you can use the normal free for stuff allocated with the aligned variants (and vice versa). + +Unfortunately (or fortunately, to detect this screw-up), this doesn't hold for the MSVC run-time on Windows. + +If one uses a consistent C++ standard version for the compilation of the whole tool-chain, all is fine. + +Therefore, if somebody stumbles on the same kind of crashes, perhaps this blog post can avoid some longer bug hunting. + +A usual crash backtrace of such an error would look like: + +{{< highlight c >}} +0x00000000778ca12f - RtlFreeHeap +0x000007fef90ba8b0 - free_base +0x000007fef910ffe2 - aligned_free +0x0000000140113fa7 - llvm::TypeFinder::~TypeFinder +{{< / highlight >}} diff --git a/content/posts/farewell-telegram-hello-signal.md b/content/posts/farewell-telegram-hello-signal.md deleted file mode 100644 index 0183b95..0000000 --- a/content/posts/farewell-telegram-hello-signal.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "Farewell Telegram - Hello Signal!" -date: 2021-12-17T20:51:00+02:00 -draft: false -categories: [www] -tags: [www] -url: /posts/farewell-telegram-hello-signal/ -author: "Christoph Cullmann" ---- - - -In the last few years I started to use Telegram as my main messenger, beside good old SMS/e-mail. - -I never used WhatsApp as I try to stay away from the Facebook/Meta/... ecosystem. - -Telegram seemed like a good choice as a lot of people I know are there and we e.g. mirror our KDE channels often to Telegram for better outreach, too. -And all old messengers like ICQ more or less were abandoned by everybody I know including myself ;=) - -Unfortunately, during the [current pandemic](https://en.wikipedia.org/wiki/COVID-19_pandemic), I met more and more people that went down into the rabbit hole thanks to totally uncontrolled Telegram groups. - -Yes, you can say: this is free speech. - -It is. - -But on the other side, I think it can't really be tolerated that people start to live in some parallel universe that completely ignores any science/laws/facts of the real world. - -Telegram isn't interested in even deleting the most obvious lies or hate speech that is spread in masses there. -Most other platforms at least try to do so. -At least this is the impression I came to in the last few months. - -I talked with people in person that live in such state of denial and I can't any longer use some application/network/service that encourages the spreading of such stuff. - -Therefore I abandoned my Telegram account this week. - -If you want to stay in touch with me via some messenger and not plain good e-mail, I use [Signal](https://signal.org/) now, at least this seems to be not as awful as Telegram looks for me now. - -My Signal account is: +49 176 235 467 98 - -I will participate in the KDE & Kate related channels via [Matrix](https://matrix.org/), e.g. thanks to [NeoChat](https://apps.kde.org/neochat/) and other free clients ;=) -Should have started to use that since long anyways, after I somehow went away from IRC years ago. - -Therefore, if you fail to contact me via Telegram, that is no accident, that is intended, sorry if that might be inconvenient. diff --git a/content/posts/farewell-telegram-hello-signal/index.md b/content/posts/farewell-telegram-hello-signal/index.md new file mode 100644 index 0000000..0183b95 --- /dev/null +++ b/content/posts/farewell-telegram-hello-signal/index.md @@ -0,0 +1,42 @@ +--- +title: "Farewell Telegram - Hello Signal!" +date: 2021-12-17T20:51:00+02:00 +draft: false +categories: [www] +tags: [www] +url: /posts/farewell-telegram-hello-signal/ +author: "Christoph Cullmann" +--- + + +In the last few years I started to use Telegram as my main messenger, beside good old SMS/e-mail. + +I never used WhatsApp as I try to stay away from the Facebook/Meta/... ecosystem. + +Telegram seemed like a good choice as a lot of people I know are there and we e.g. mirror our KDE channels often to Telegram for better outreach, too. +And all old messengers like ICQ more or less were abandoned by everybody I know including myself ;=) + +Unfortunately, during the [current pandemic](https://en.wikipedia.org/wiki/COVID-19_pandemic), I met more and more people that went down into the rabbit hole thanks to totally uncontrolled Telegram groups. + +Yes, you can say: this is free speech. + +It is. + +But on the other side, I think it can't really be tolerated that people start to live in some parallel universe that completely ignores any science/laws/facts of the real world. + +Telegram isn't interested in even deleting the most obvious lies or hate speech that is spread in masses there. +Most other platforms at least try to do so. +At least this is the impression I came to in the last few months. + +I talked with people in person that live in such state of denial and I can't any longer use some application/network/service that encourages the spreading of such stuff. + +Therefore I abandoned my Telegram account this week. + +If you want to stay in touch with me via some messenger and not plain good e-mail, I use [Signal](https://signal.org/) now, at least this seems to be not as awful as Telegram looks for me now. + +My Signal account is: +49 176 235 467 98 + +I will participate in the KDE & Kate related channels via [Matrix](https://matrix.org/), e.g. thanks to [NeoChat](https://apps.kde.org/neochat/) and other free clients ;=) +Should have started to use that since long anyways, after I somehow went away from IRC years ago. + +Therefore, if you fail to contact me via Telegram, that is no accident, that is intended, sorry if that might be inconvenient. diff --git a/content/posts/hugo-extended-centos-7.md b/content/posts/hugo-extended-centos-7.md deleted file mode 100644 index 1c68b2c..0000000 --- a/content/posts/hugo-extended-centos-7.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Hugo Extended on CentOS 7" -date: 2019-04-06T22:55:00+02:00 -draft: false -categories: [www] -tags: [hugo, centos] -url: /posts/hugo-extended-centos-7/ -author: "Christoph Cullmann" ---- - -After first using the Hermit theme, I moved to the Hugo Coder theme to have a nicer front page and menu at the top. - -Unfortunately that needs Hugo in the "extended" version. - -The binary one can download on https://github.com/gohugoio/hugo/releases doesn't run on CentOS 7, unlike the normal variant you get there (too new libstdc++ needed). - -One has to recompile it to get that working. - -To make it easier for others, to do so, just: - -* install golang + gcc-c++ on your CentOS 7 -* download https://github.com/gohugoio/hugo/archive/v0.54.0.tar.gz -* execute in the source directory `go install -tags extended` -* grab the result binary in your ~/go directory - -If you need a pre-compiled one, on your own risk, use the one in my git, https://github.com/christoph-cullmann/cullmann.io. diff --git a/content/posts/hugo-extended-centos-7/index.md b/content/posts/hugo-extended-centos-7/index.md new file mode 100644 index 0000000..1c68b2c --- /dev/null +++ b/content/posts/hugo-extended-centos-7/index.md @@ -0,0 +1,26 @@ +--- +title: "Hugo Extended on CentOS 7" +date: 2019-04-06T22:55:00+02:00 +draft: false +categories: [www] +tags: [hugo, centos] +url: /posts/hugo-extended-centos-7/ +author: "Christoph Cullmann" +--- + +After first using the Hermit theme, I moved to the Hugo Coder theme to have a nicer front page and menu at the top. + +Unfortunately that needs Hugo in the "extended" version. + +The binary one can download on https://github.com/gohugoio/hugo/releases doesn't run on CentOS 7, unlike the normal variant you get there (too new libstdc++ needed). + +One has to recompile it to get that working. + +To make it easier for others, to do so, just: + +* install golang + gcc-c++ on your CentOS 7 +* download https://github.com/gohugoio/hugo/archive/v0.54.0.tar.gz +* execute in the source directory `go install -tags extended` +* grab the result binary in your ~/go directory + +If you need a pre-compiled one, on your own risk, use the one in my git, https://github.com/christoph-cullmann/cullmann.io. diff --git a/content/posts/kate-cpp-developer-survey.md b/content/posts/kate-cpp-developer-survey.md deleted file mode 100644 index 1775760..0000000 --- a/content/posts/kate-cpp-developer-survey.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Kate & C++ Developer Survey" -date: 2019-06-10T22:45:00+02:00 -draft: false -categories: [kde, kate, development] -tags: [kde, kate] -url: /posts/kate-cpp-developer-survey/ -author: "Christoph Cullmann" ---- - -While browsing the [ISO C++ homepage](https://isocpp.org) I stumbled over the [results PDF](https://isocpp.org/files/papers/CppDevSurvey-2019-04-summary.pdf) of the [Second Annual C++ Foundation Developer Survey “Lite”](https://isocpp.org/blog/2019/05/results-summary-2019-global-developer-survey-lite). - -I was astonished that Kate made it into the "Which development environments (IDEs) or editors do you use for C++ development?" results. - -;=) Seems not only I use it as my normal editor for working on C++ code. - -And heads up, KDevelop is there, too! - -This is actually the second survey, I missed to notice the first one last year. -The [results PDF](https://isocpp.org/files/papers/CppDevSurvey-2018-02-summary.pdf) from [last year](https://isocpp.org/blog/2018/03/results-summary-cpp-foundation-developer-survey-lite-2018-02) shows Kate did show up already there. - -We shouldn't be that proud of only having less than three percent usage, but still, we are there at all. -I hope we can rise here a bit in the future. - -At least we work on supporting modern C++ standards in the highlighting, e.g. see the recent C++20 improvements ([Phabricator](https://phabricator.kde.org/D21585) + [Commit](https://cgit.kde.org/syntax-highlighting.git/commit/?id=9ba02971123d255c10fca97223538c439e252e3d)). Thanks to Jonathan Poelen for the patch! - -[Language Server Protocol (LSP)](/posts/kate-lsp-client-progress/) would help, too, but my initial work is far from usable, help appreciated. -Beside a hacked "goto definition" nothing works at the moment (and it is hardcoded to just start clangd, no other LSP server). diff --git a/content/posts/kate-cpp-developer-survey/index.md b/content/posts/kate-cpp-developer-survey/index.md new file mode 100644 index 0000000..1775760 --- /dev/null +++ b/content/posts/kate-cpp-developer-survey/index.md @@ -0,0 +1,28 @@ +--- +title: "Kate & C++ Developer Survey" +date: 2019-06-10T22:45:00+02:00 +draft: false +categories: [kde, kate, development] +tags: [kde, kate] +url: /posts/kate-cpp-developer-survey/ +author: "Christoph Cullmann" +--- + +While browsing the [ISO C++ homepage](https://isocpp.org) I stumbled over the [results PDF](https://isocpp.org/files/papers/CppDevSurvey-2019-04-summary.pdf) of the [Second Annual C++ Foundation Developer Survey “Lite”](https://isocpp.org/blog/2019/05/results-summary-2019-global-developer-survey-lite). + +I was astonished that Kate made it into the "Which development environments (IDEs) or editors do you use for C++ development?" results. + +;=) Seems not only I use it as my normal editor for working on C++ code. + +And heads up, KDevelop is there, too! + +This is actually the second survey, I missed to notice the first one last year. +The [results PDF](https://isocpp.org/files/papers/CppDevSurvey-2018-02-summary.pdf) from [last year](https://isocpp.org/blog/2018/03/results-summary-cpp-foundation-developer-survey-lite-2018-02) shows Kate did show up already there. + +We shouldn't be that proud of only having less than three percent usage, but still, we are there at all. +I hope we can rise here a bit in the future. + +At least we work on supporting modern C++ standards in the highlighting, e.g. see the recent C++20 improvements ([Phabricator](https://phabricator.kde.org/D21585) + [Commit](https://cgit.kde.org/syntax-highlighting.git/commit/?id=9ba02971123d255c10fca97223538c439e252e3d)). Thanks to Jonathan Poelen for the patch! + +[Language Server Protocol (LSP)](/posts/kate-lsp-client-progress/) would help, too, but my initial work is far from usable, help appreciated. +Beside a hacked "goto definition" nothing works at the moment (and it is hardcoded to just start clangd, no other LSP server). diff --git a/content/posts/kate-language-server-protocol-client.md b/content/posts/kate-language-server-protocol-client.md deleted file mode 100644 index a346a1e..0000000 --- a/content/posts/kate-language-server-protocol-client.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Kate Language Server Protocol Client" -date: 2019-04-28T20:36:00+02:00 -draft: false -categories: [kde, kate, development] -tags: [kde, kate] -url: /posts/kate-language-server-protocol-client/ -author: "Christoph Cullmann" ---- - -The [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/overview) allows the integration of stuff like code completion, jump to definition, symbol search and more into an application without manual re-implementation for each language one wants to support. -LSP doesn't fully allow an integration like [KDevelop](https://www.kdevelop.org) or Qt Creator do with the [libclang](https://clang.llvm.org/docs/Tooling.html) based tooling aimed for C/C++ but on the other side offers the possibility to interface with [plenty of languages](https://langserver.org/#implementations-server) without a large effort on the client side. - -If one takes a look at some current [LSP clients list](https://langserver.org/#implementations-client), a lot of editors and IDEs have joined the LSP family in the last years. - -In the past I was always scared away to start implementing this in Kate, as no readily available library was around to do the low-level work for the client. -Whereas you get some reference stuff for the JSON based protocol for JavaScript and such, for Qt nothing was around. - -Fortunately Qt Creator started to implement an LSP client beginning with [the 4.8 release](https://blog.qt.io/blog/2018/12/06/qt-creator-4-8-0-released/). - -Based on this code, I started now to get this into the Kate project plugin. -At the moment not much more has happened then some initial import of the Qt Creator LSP infrastructure code into the [Kate lsp branch](https://cgit.kde.org/kate.git/log/?h=lsp). - -If I get this working (help is welcome!), any improvements will be submitted back to the Qt Creator implementation. -If it really starts to work well in Kate, one might think about some better code sharing in the long term. -But before such plans, first at least some basic things must work for some initial language server like [clangd](https://clang.llvm.org/extra/clangd/). diff --git a/content/posts/kate-language-server-protocol-client/index.md b/content/posts/kate-language-server-protocol-client/index.md new file mode 100644 index 0000000..a346a1e --- /dev/null +++ b/content/posts/kate-language-server-protocol-client/index.md @@ -0,0 +1,26 @@ +--- +title: "Kate Language Server Protocol Client" +date: 2019-04-28T20:36:00+02:00 +draft: false +categories: [kde, kate, development] +tags: [kde, kate] +url: /posts/kate-language-server-protocol-client/ +author: "Christoph Cullmann" +--- + +The [Language Server Protocol (LSP)](https://microsoft.github.io/language-server-protocol/overview) allows the integration of stuff like code completion, jump to definition, symbol search and more into an application without manual re-implementation for each language one wants to support. +LSP doesn't fully allow an integration like [KDevelop](https://www.kdevelop.org) or Qt Creator do with the [libclang](https://clang.llvm.org/docs/Tooling.html) based tooling aimed for C/C++ but on the other side offers the possibility to interface with [plenty of languages](https://langserver.org/#implementations-server) without a large effort on the client side. + +If one takes a look at some current [LSP clients list](https://langserver.org/#implementations-client), a lot of editors and IDEs have joined the LSP family in the last years. + +In the past I was always scared away to start implementing this in Kate, as no readily available library was around to do the low-level work for the client. +Whereas you get some reference stuff for the JSON based protocol for JavaScript and such, for Qt nothing was around. + +Fortunately Qt Creator started to implement an LSP client beginning with [the 4.8 release](https://blog.qt.io/blog/2018/12/06/qt-creator-4-8-0-released/). + +Based on this code, I started now to get this into the Kate project plugin. +At the moment not much more has happened then some initial import of the Qt Creator LSP infrastructure code into the [Kate lsp branch](https://cgit.kde.org/kate.git/log/?h=lsp). + +If I get this working (help is welcome!), any improvements will be submitted back to the Qt Creator implementation. +If it really starts to work well in Kate, one might think about some better code sharing in the long term. +But before such plans, first at least some basic things must work for some initial language server like [clangd](https://clang.llvm.org/extra/clangd/). diff --git a/content/posts/kate-lsp-client-progress.md b/content/posts/kate-lsp-client-progress.md deleted file mode 100644 index 8b9b3b8..0000000 --- a/content/posts/kate-lsp-client-progress.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Kate LSP Client Progress" -date: 2019-05-13T00:02:00+02:00 -draft: false -categories: [kde, kate, development] -tags: [kde, kate] -url: /posts/kate-lsp-client-progress/ -author: "Christoph Cullmann" ---- - -The [Kate lsp branch](https://cgit.kde.org/kate.git/log/?h=lsp) contains now the infrastructure as used by Qt Creator. -In addition, [clangd](https://clang.llvm.org/extra/clangd/) is now somehow started in a working state for the first project opened inside Kate. - -For example, if you use the CMake Kate project generator and you compile Kate from the "lsp" branch, clangd should pick up the compile_commands.json for a CMake generated Kate project. - -;=) Unfortunately not much more than starting and informing clangd about the open workspaces (for the first opened project) works ATM. - -If you press ALT-1 over some identifier, you will get some debug output on the console about found links, like below: - -> qtc.languageclient.parse: content: "{\"id\":\"{812e04c6-2bca-42e3-a632-d616fdc2f7d4}\",\"jsonrpc\":\"2.0\",\"result\":[{\"range\":{\"end\":{\"character\":20,\"line\":67},\"start\":{\"character\":6,\"line\":67}},\"uri\":\"file:///local/cullmann/kde/src/kate/kate/katemainwindow.h\"}]}" - -The current ALT-1 handling is a big hack, as then one just adds the current document and triggers the GotoDefinitionRequest. -A proper implementation tracks the opened/closed documented of the editor. - -But at least in principle Kate is now able to start some language server processes and talk a bit with them, all thanks to the nice code borrowed from Qt Creator. - -:=) As my spare time is limited, any help in bringing the branch up-to-speed is highly welcome, just drop us a mail to [kwrite-devel@kde.org](mailto:kwrite-devel@kde.org) or mail me in private ([cullmann@kde.org](mailto:cullmann@kde.org)). -A working LSP integration will help to make Kate more attractive for programmers of many languages. diff --git a/content/posts/kate-lsp-client-progress/index.md b/content/posts/kate-lsp-client-progress/index.md new file mode 100644 index 0000000..8b9b3b8 --- /dev/null +++ b/content/posts/kate-lsp-client-progress/index.md @@ -0,0 +1,28 @@ +--- +title: "Kate LSP Client Progress" +date: 2019-05-13T00:02:00+02:00 +draft: false +categories: [kde, kate, development] +tags: [kde, kate] +url: /posts/kate-lsp-client-progress/ +author: "Christoph Cullmann" +--- + +The [Kate lsp branch](https://cgit.kde.org/kate.git/log/?h=lsp) contains now the infrastructure as used by Qt Creator. +In addition, [clangd](https://clang.llvm.org/extra/clangd/) is now somehow started in a working state for the first project opened inside Kate. + +For example, if you use the CMake Kate project generator and you compile Kate from the "lsp" branch, clangd should pick up the compile_commands.json for a CMake generated Kate project. + +;=) Unfortunately not much more than starting and informing clangd about the open workspaces (for the first opened project) works ATM. + +If you press ALT-1 over some identifier, you will get some debug output on the console about found links, like below: + +> qtc.languageclient.parse: content: "{\"id\":\"{812e04c6-2bca-42e3-a632-d616fdc2f7d4}\",\"jsonrpc\":\"2.0\",\"result\":[{\"range\":{\"end\":{\"character\":20,\"line\":67},\"start\":{\"character\":6,\"line\":67}},\"uri\":\"file:///local/cullmann/kde/src/kate/kate/katemainwindow.h\"}]}" + +The current ALT-1 handling is a big hack, as then one just adds the current document and triggers the GotoDefinitionRequest. +A proper implementation tracks the opened/closed documented of the editor. + +But at least in principle Kate is now able to start some language server processes and talk a bit with them, all thanks to the nice code borrowed from Qt Creator. + +:=) As my spare time is limited, any help in bringing the branch up-to-speed is highly welcome, just drop us a mail to [kwrite-devel@kde.org](mailto:kwrite-devel@kde.org) or mail me in private ([cullmann@kde.org](mailto:cullmann@kde.org)). +A working LSP integration will help to make Kate more attractive for programmers of many languages. diff --git a/content/posts/kde-ev-wants-you.md b/content/posts/kde-ev-wants-you.md deleted file mode 100644 index 6dafbc2..0000000 --- a/content/posts/kde-ev-wants-you.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "KDE e.V. wants you!" -date: 2019-09-08T11:20:00+02:00 -draft: false -categories: [kde] -tags: [kde] -url: /posts/kde-ev-wants-you/ -author: "Christoph Cullmann" ---- - -At the moment, the yearly KDE conference [Akademy](https://akademy.kde.org/2019) is taking place in Milan. -The yearly [KDE e.V.](https://ev.kde.org) meeting will be tomorrow. - -KDE e.V. is a registered non-profit organization that represents the KDE Community in legal and financial matters. - -For example the KDE e.V. is responsible for paying the servers that run our Phabricator/Bugzilla/Gitlab instances and all our web sites. -KDE e.V. takes care of sponsoring developer sprints and contributor travel costs, too. - -If you are a KDE contributor, consider to join the e.V. to get some vote about its direction. - -If you want to join, just take a short look at [this guide](https://ev.kde.org/getinvolved/members.php). diff --git a/content/posts/kde-ev-wants-you/index.md b/content/posts/kde-ev-wants-you/index.md new file mode 100644 index 0000000..6dafbc2 --- /dev/null +++ b/content/posts/kde-ev-wants-you/index.md @@ -0,0 +1,21 @@ +--- +title: "KDE e.V. wants you!" +date: 2019-09-08T11:20:00+02:00 +draft: false +categories: [kde] +tags: [kde] +url: /posts/kde-ev-wants-you/ +author: "Christoph Cullmann" +--- + +At the moment, the yearly KDE conference [Akademy](https://akademy.kde.org/2019) is taking place in Milan. +The yearly [KDE e.V.](https://ev.kde.org) meeting will be tomorrow. + +KDE e.V. is a registered non-profit organization that represents the KDE Community in legal and financial matters. + +For example the KDE e.V. is responsible for paying the servers that run our Phabricator/Bugzilla/Gitlab instances and all our web sites. +KDE e.V. takes care of sponsoring developer sprints and contributor travel costs, too. + +If you are a KDE contributor, consider to join the e.V. to get some vote about its direction. + +If you want to join, just take a short look at [this guide](https://ev.kde.org/getinvolved/members.php). diff --git a/content/posts/kf6-release-plan.md b/content/posts/kf6-release-plan.md deleted file mode 100644 index d3adafc..0000000 --- a/content/posts/kf6-release-plan.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "KDE Frameworks 6 / Plasma / Gear Release Schedule Plan" -date: 2023-09-07T22:05:00+02:00 -draft: false -categories: [kde, development] -tags: [kde] -url: /posts/kf6-release-plan/ -author: "Christoph Cullmann" ---- - -The Qt 6 based KDE Frameworks 6 (KF6) development is ongoing since some time. - -Already many things including Plasma and several applications, like Kate, have working KF6 based development versions. - -KDE contributors did meet this week online for planning the final release time-frames. - -We came up with [this current plan](https://mail.kde.org/pipermail/kde-devel/2023-September/002008.html): - -> Frameworks / Plasma/ Gear Release Schedule Plan -> -> Following on from the last Akademy we checked where we were with our -> development progress in a meeting and settled on the following plan -> for all 3 major parts: -> -> - In KDE Gear master will be open for Qt6 code to land for those -> ready to move. Not all apps need to port. -> -> - The KDE Gear release will move by 2 months to allow for the extra -> time needed for testing initial Qt6 changes -> -> - An Alpha will be made in November (a soft freeze in Plasma terms) -> -> - Betas/RCs will be made throughout December and January (3 releases, -> 3 weeks apart) -> -> - Final release of all 3 major parts in sync in February -> -> Due to the delay of KDE Gear by an additional patch release of 23.08 -> will be made. - -This is still up for discussion, but if no objections come up, we will see a triple release of a first stable KF6, KF6 based Plasma and KF6 based Gear next February. - -There is still a lot to do, [help is welcome](https://community.kde.org/Get_Involved)! diff --git a/content/posts/kf6-release-plan/index.md b/content/posts/kf6-release-plan/index.md new file mode 100644 index 0000000..d3adafc --- /dev/null +++ b/content/posts/kf6-release-plan/index.md @@ -0,0 +1,43 @@ +--- +title: "KDE Frameworks 6 / Plasma / Gear Release Schedule Plan" +date: 2023-09-07T22:05:00+02:00 +draft: false +categories: [kde, development] +tags: [kde] +url: /posts/kf6-release-plan/ +author: "Christoph Cullmann" +--- + +The Qt 6 based KDE Frameworks 6 (KF6) development is ongoing since some time. + +Already many things including Plasma and several applications, like Kate, have working KF6 based development versions. + +KDE contributors did meet this week online for planning the final release time-frames. + +We came up with [this current plan](https://mail.kde.org/pipermail/kde-devel/2023-September/002008.html): + +> Frameworks / Plasma/ Gear Release Schedule Plan +> +> Following on from the last Akademy we checked where we were with our +> development progress in a meeting and settled on the following plan +> for all 3 major parts: +> +> - In KDE Gear master will be open for Qt6 code to land for those +> ready to move. Not all apps need to port. +> +> - The KDE Gear release will move by 2 months to allow for the extra +> time needed for testing initial Qt6 changes +> +> - An Alpha will be made in November (a soft freeze in Plasma terms) +> +> - Betas/RCs will be made throughout December and January (3 releases, +> 3 weeks apart) +> +> - Final release of all 3 major parts in sync in February +> +> Due to the delay of KDE Gear by an additional patch release of 23.08 +> will be made. + +This is still up for discussion, but if no objections come up, we will see a triple release of a first stable KF6, KF6 based Plasma and KF6 based Gear next February. + +There is still a lot to do, [help is welcome](https://community.kde.org/Get_Involved)! diff --git a/content/posts/ktexteditor-kate-bugs-help-appreciated.md b/content/posts/ktexteditor-kate-bugs-help-appreciated.md deleted file mode 100644 index 17bc925..0000000 --- a/content/posts/ktexteditor-kate-bugs-help-appreciated.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: "KTextEditor/Kate Bugs - Help Appreciated" -date: 2019-05-24T16:20:00+02:00 -draft: false -categories: [kde, kate, development] -tags: [kde, kate] -url: /posts/ktexteditor-kate-bugs-help-appreciated/ -author: "Christoph Cullmann" ---- - -The bug report count of KTextEditor (implementing the editing part used in Kate/KWrite/KDevelop/Kile/...) and Kate itself reached again -some value over 200. - -If you have time and need an itch to scratch, any help to tackle the currently open bugs would be highly appreciated. - -The full list can be found with this [bugs.kde.org query](https://bugs.kde.org/buglist.cgi?bug_severity=critical&bug_severity=grave&bug_severity=major&bug_severity=crash&bug_severity=normal&bug_severity=minor&bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&columnlist=bug_severity%2Cpriority%2Cassigned_to%2Cbug_status%2Cresolution%2Ccomponent%2Cshort_desc%2Cchangeddate%2Cop_sys%2Crep_platform%2Creporter&list_id=1624725&order=bug_id%20DESC&product=frameworks-ktexteditor&product=kate&query_based_on=Kate%2FKWrite%20Bugs&query_format=advanced). - -Easy things anybody with a bit time could do would be: - -* check if the bug still is there with current master builds, if not, close it it -* check if it is the duplicate of a similar still open bug, if yes, mark it as duplicate - -Beside that, patches for any of the existing issues are very welcome. - -I think the best guide how to setup some development environment is on our [KDE Community Wiki](https://community.kde.org/Guidelines_and_HOWTOs/Build_from_source). -I myself use a kdesrc-build environment like described there, too. - -Patches can be submitted for an review via our [KDE Phabricator](https://phabricator.kde.org/differential/). - -If it is just a small change and you don't want to spend time on Phabricator, attaching a git diff versus current master to the bug is ok, too. -Best mark the bug with a **[PATCH]** prefix in the subject. - -The team working on the code is small, therefore please be a bit patient if you wait for reactions. -I hope we have improved our reaction time in the last months but we still are lacking in that respect. diff --git a/content/posts/ktexteditor-kate-bugs-help-appreciated/index.md b/content/posts/ktexteditor-kate-bugs-help-appreciated/index.md new file mode 100644 index 0000000..17bc925 --- /dev/null +++ b/content/posts/ktexteditor-kate-bugs-help-appreciated/index.md @@ -0,0 +1,34 @@ +--- +title: "KTextEditor/Kate Bugs - Help Appreciated" +date: 2019-05-24T16:20:00+02:00 +draft: false +categories: [kde, kate, development] +tags: [kde, kate] +url: /posts/ktexteditor-kate-bugs-help-appreciated/ +author: "Christoph Cullmann" +--- + +The bug report count of KTextEditor (implementing the editing part used in Kate/KWrite/KDevelop/Kile/...) and Kate itself reached again +some value over 200. + +If you have time and need an itch to scratch, any help to tackle the currently open bugs would be highly appreciated. + +The full list can be found with this [bugs.kde.org query](https://bugs.kde.org/buglist.cgi?bug_severity=critical&bug_severity=grave&bug_severity=major&bug_severity=crash&bug_severity=normal&bug_severity=minor&bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&columnlist=bug_severity%2Cpriority%2Cassigned_to%2Cbug_status%2Cresolution%2Ccomponent%2Cshort_desc%2Cchangeddate%2Cop_sys%2Crep_platform%2Creporter&list_id=1624725&order=bug_id%20DESC&product=frameworks-ktexteditor&product=kate&query_based_on=Kate%2FKWrite%20Bugs&query_format=advanced). + +Easy things anybody with a bit time could do would be: + +* check if the bug still is there with current master builds, if not, close it it +* check if it is the duplicate of a similar still open bug, if yes, mark it as duplicate + +Beside that, patches for any of the existing issues are very welcome. + +I think the best guide how to setup some development environment is on our [KDE Community Wiki](https://community.kde.org/Guidelines_and_HOWTOs/Build_from_source). +I myself use a kdesrc-build environment like described there, too. + +Patches can be submitted for an review via our [KDE Phabricator](https://phabricator.kde.org/differential/). + +If it is just a small change and you don't want to spend time on Phabricator, attaching a git diff versus current master to the bug is ok, too. +Best mark the bug with a **[PATCH]** prefix in the subject. + +The team working on the code is small, therefore please be a bit patient if you wait for reactions. +I hope we have improved our reaction time in the last months but we still are lacking in that respect. diff --git a/content/posts/ktexteditor-kate-bugs-scratch-your-own-itch.md b/content/posts/ktexteditor-kate-bugs-scratch-your-own-itch.md deleted file mode 100644 index 7d49dd3..0000000 --- a/content/posts/ktexteditor-kate-bugs-scratch-your-own-itch.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "KTextEditor/Kate Bugs - Scratch Your Own Itch" -date: 2019-05-26T14:25:00+02:00 -draft: false -categories: [kde, kate, development] -tags: [kde, kate] -url: /posts/ktexteditor-kate-bugs-scratch-your-own-itch/ -author: "Christoph Cullmann" ---- - -Two days ago I mentioned [here](/posts/ktexteditor-kate-bugs-help-appreciated/) that the bug report count of KTextEditor and Kate has risen to some not that manageable amount. - -For developers that report a bugs or wish, the best way to really get it solved is to scratch your own itch and provide some patch. - -I know this is not feasible for all bug reporters, as not all are developers nor will even the developers all have either time nor perhaps the right skill set to tackle the issue on their own. - -But if you have the time and you are at least a bit familiar with C++/Qt, you should give it a try. - -We can help you to get your patch done, that is much easier for e.g. myself than to motivate me to work on a bug or wish that doesn't concern my normal workflow or lie within my skill set. - -For example we have a lot of issues with left-to-right text rendering or related to languages that use complex Unicode surrogates. -Given I have zero knowledge of any language using this my motivation to dig into these issues is small (and I will more likely break more things than fix them). - -The same holds for issues in our Vi mode. -I don't use this mode myself nor do I really know how Vi commands shall behave in real life. -Therefore any fix or enhancement there is beyond me. - -A good example for such a "Scratch Your Own Itch" approach is [bug 407910](https://bugs.kde.org/show_bug.cgi?id=407910). - -It is a small request, to have some action/shortcut to reset the font size to the default one. -We have since years some zoom in/out actions/shortcuts but nothing to go back to the configured one. - -I rarely use the zoom stuff, perhaps once in a month, if I want to show something to a colleague on my screen or projector and it is really not readable with my normal font size. -Therefore my motivation to invest any work into yet an other action I will not use regularly is small. - -But, in this case, the reporter had the time to invest a bit work into this. - -He provided a patch via our [KDE Phabricator - D21412](https://phabricator.kde.org/D21412). - -We needed some iterations to get the patch into a usable shape in the bug report and in Phabricator, but thanks to the persistence of the reporter, it got now [pushed](https://cgit.kde.org/ktexteditor.git/commit/?id=968af10fd4b64cccf6a858f105ac6cfad9fce78e) to our repository. - -If nobody would have stepped up to provide at least some initial patch for this, such a request for sure would have rotted again in our bug database. - -This is not the first time such a nice thing happened, this is just a recent example how such things can work out. - -Therefore, if you report something and are capable of given it a try on your own, please do so! - -Perhaps even some of the existing [bugs](https://bugs.kde.org/buglist.cgi?bug_severity=critical&bug_severity=grave&bug_severity=major&bug_severity=crash&bug_severity=normal&bug_severity=minor&bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&columnlist=bug_severity%2Cpriority%2Cassigned_to%2Cbug_status%2Cresolution%2Ccomponent%2Cshort_desc%2Cchangeddate%2Cop_sys%2Crep_platform%2Creporter&known_name=Kate%2FKWrite%20Bugs&list_id=1625288&product=frameworks-ktexteditor&product=kate&query_based_on=Kate%2FKWrite%20Bugs&query_format=advanced) or [wishes](https://bugs.kde.org/buglist.cgi?bug_severity=wishlist&bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Creporter%2Creporter_realname&known_name=Kate%2FKWrite%20Wishs&list_id=1625290&product=frameworks-ktexteditor&product=kate&query_based_on=Kate%2FKWrite%20Wishs&query_format=advanced) are stuff you want to take care of yourself because they concern you! - -I think not a lot motivates your more to do something than an issue you have with a tool for your workflow. -At least for me that was the reason to at all start the development of Kate (I missed a MDI variant of KWrite) and join the work on stuff like KTextEditor. diff --git a/content/posts/ktexteditor-kate-bugs-scratch-your-own-itch/index.md b/content/posts/ktexteditor-kate-bugs-scratch-your-own-itch/index.md new file mode 100644 index 0000000..7d49dd3 --- /dev/null +++ b/content/posts/ktexteditor-kate-bugs-scratch-your-own-itch/index.md @@ -0,0 +1,51 @@ +--- +title: "KTextEditor/Kate Bugs - Scratch Your Own Itch" +date: 2019-05-26T14:25:00+02:00 +draft: false +categories: [kde, kate, development] +tags: [kde, kate] +url: /posts/ktexteditor-kate-bugs-scratch-your-own-itch/ +author: "Christoph Cullmann" +--- + +Two days ago I mentioned [here](/posts/ktexteditor-kate-bugs-help-appreciated/) that the bug report count of KTextEditor and Kate has risen to some not that manageable amount. + +For developers that report a bugs or wish, the best way to really get it solved is to scratch your own itch and provide some patch. + +I know this is not feasible for all bug reporters, as not all are developers nor will even the developers all have either time nor perhaps the right skill set to tackle the issue on their own. + +But if you have the time and you are at least a bit familiar with C++/Qt, you should give it a try. + +We can help you to get your patch done, that is much easier for e.g. myself than to motivate me to work on a bug or wish that doesn't concern my normal workflow or lie within my skill set. + +For example we have a lot of issues with left-to-right text rendering or related to languages that use complex Unicode surrogates. +Given I have zero knowledge of any language using this my motivation to dig into these issues is small (and I will more likely break more things than fix them). + +The same holds for issues in our Vi mode. +I don't use this mode myself nor do I really know how Vi commands shall behave in real life. +Therefore any fix or enhancement there is beyond me. + +A good example for such a "Scratch Your Own Itch" approach is [bug 407910](https://bugs.kde.org/show_bug.cgi?id=407910). + +It is a small request, to have some action/shortcut to reset the font size to the default one. +We have since years some zoom in/out actions/shortcuts but nothing to go back to the configured one. + +I rarely use the zoom stuff, perhaps once in a month, if I want to show something to a colleague on my screen or projector and it is really not readable with my normal font size. +Therefore my motivation to invest any work into yet an other action I will not use regularly is small. + +But, in this case, the reporter had the time to invest a bit work into this. + +He provided a patch via our [KDE Phabricator - D21412](https://phabricator.kde.org/D21412). + +We needed some iterations to get the patch into a usable shape in the bug report and in Phabricator, but thanks to the persistence of the reporter, it got now [pushed](https://cgit.kde.org/ktexteditor.git/commit/?id=968af10fd4b64cccf6a858f105ac6cfad9fce78e) to our repository. + +If nobody would have stepped up to provide at least some initial patch for this, such a request for sure would have rotted again in our bug database. + +This is not the first time such a nice thing happened, this is just a recent example how such things can work out. + +Therefore, if you report something and are capable of given it a try on your own, please do so! + +Perhaps even some of the existing [bugs](https://bugs.kde.org/buglist.cgi?bug_severity=critical&bug_severity=grave&bug_severity=major&bug_severity=crash&bug_severity=normal&bug_severity=minor&bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&columnlist=bug_severity%2Cpriority%2Cassigned_to%2Cbug_status%2Cresolution%2Ccomponent%2Cshort_desc%2Cchangeddate%2Cop_sys%2Crep_platform%2Creporter&known_name=Kate%2FKWrite%20Bugs&list_id=1625288&product=frameworks-ktexteditor&product=kate&query_based_on=Kate%2FKWrite%20Bugs&query_format=advanced) or [wishes](https://bugs.kde.org/buglist.cgi?bug_severity=wishlist&bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Creporter%2Creporter_realname&known_name=Kate%2FKWrite%20Wishs&list_id=1625290&product=frameworks-ktexteditor&product=kate&query_based_on=Kate%2FKWrite%20Wishs&query_format=advanced) are stuff you want to take care of yourself because they concern you! + +I think not a lot motivates your more to do something than an issue you have with a tool for your workflow. +At least for me that was the reason to at all start the development of Kate (I missed a MDI variant of KWrite) and join the work on stuff like KTextEditor. diff --git a/content/posts/manjaro-with-kde-on-a-macbook-pro.md b/content/posts/manjaro-with-kde-on-a-macbook-pro.md deleted file mode 100644 index 2e9c15e..0000000 --- a/content/posts/manjaro-with-kde-on-a-macbook-pro.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "Manjaro with KDE on a MacBook Pro" -date: 2020-01-14T21:22:00+02:00 -draft: false -categories: [KDE, Kate, macOS] -tags: [KDE, Kate, macOS] -url: /posts/manjaro-with-kde-on-a-macbook-pro.md/ -author: "Christoph Cullmann" ---- - -I bought a MacBook end of 2014. -My initial reason to buy it was to [improve the Kate port](https://kate-editor.org/2015/01/03/kate5-on-mac/) for macOS. -Beside that, I wanted to try if the Apple ecosystem and macOS are really that great and will solve all my issues in life (short answer: no, they aren't, at least not for me). -The HiDPI screen looked nice, too :=) - -After some initial "not a lot works", if you don't go the [Homebrew](https://brew.sh/) or [MacPorts](https://www.macports.org/) way, the Kate port improved over the following years. - -I learned a lot about standalone non-Linux deployment of applications and macOS specifics in the process. - -As a side-effect of my porting efforts, with the help of others, I was able to improve the deployment of [KDE Frameworks](https://api.kde.org/frameworks/index.html) in some ways, e.g. by allowing to bundle more stuff inside [Qt resources](https://doc.qt.io/qt-5/resources.html). - -For example the [KSyntaxHighlighting](https://api.kde.org/frameworks/syntax-highlighting/html/index.html) or [KTextEditor](https://api.kde.org/frameworks/ktexteditor/html/index.html) frameworks are now just a library you link, you don't need to deploy any extra data files. -This is a huge improvement, if you want to bundle them with your standalone application. - -Unfortunately, my initial hope, that we would get more people contributing to the macOS port (and with this to KTextEditor/Kate/...) didn't really take off. - -Beside some minimal help, not a lot happened. - -I think my last self-provided bundle update for macOS was in [2016](https://kate-editor.org/2016/06/16/new-katekwrite-bundles-for-mac/). - -The binary factory still churns out new builds, you can grab them via the links on our [download page](https://kate-editor.org/get-it/). - -I occasionally tried them, but they never got polished in a way like our Windows variants that we now even ship via the [Windows Store](https://www.microsoft.com/store/apps/9NWMW7BB59HW). - -Apple doesn't make the world a better place with each update of macOS, see for example the now necessary notarized builds and the effort the cause for e.g. [Krita](https://krita.org/en/item/first-notarized-macos-build-of-krita/) -(and with necessary I mean: you shall do it, otherwise your users are nagged with "do you really want to execute this..." stuff that makes a very bad impression). - -In the last years, I used my MacBook more or less just to either grab some stuff from iTunes or do stuff inside my Linux VirtualBox there. - -Given I anyways have a proper Windows 10 VM to take care of the Windows development for Kate (yes, Apple, Microsoft allows that officially, you can just buy a license, you can even get some 'free' developer VM images for a fixed time...), I just migrated my seldom used iTunes account to that machine. - -With that away, I just installed purely [Manjaro Linux](https://manjaro.org/) on my MacBook last evening, who cares, I anyways don't use macOS at all beside as VirtualBox startup environment. - -I searched for some pointers in the internet, in the past I already had some parallel install. -If you search a bit, you will find various hints how to do it. - -If people want to do the same as me, a pure Manjaro install without keeping any macOS around, here a minimal how-to for a MacBook Pro Retina 13" (model number MGX82**/A, model id MacBookPro11,1): - -* Get the USB installer from their [Manjaro Linux](https://manjaro.org/) homepage, I used the KDE variant ;=) - -* Get it on a stick and plug it into your MacBook - -* Boot up your MacBook (pressing the ALT key) - -* Select the EFI boot option. - -* Start the live system, like on any other machine - -* If you want to have internet, which is a good idea to e.g. later easily install the Broadcom driver, use your mobile phone with USB-tethering - -* Install it normally, I used the "erase my full drive and encrypt it" variant. Be careful, your data is gone afterwards, you got warned! - -* Reboot your MacBook, you will boot into your fresh installed Manjaro - -* Install the matching Broadcom driver for your kernel, something like "linux54-broadcom-wl" - -* Install some fan control like "mbpfan-git" and enable it afterwards with "sudo systemctl enable mbpfan" + "sudo systemctl start mbpfan" - -For me this did the job and the stuff is running well enough. -The webcam won't work without additional effort, not that I use it. -No idea if Bluetooth or other stuff like the Thunderbolt ports work, but I never used that even on macOS. - -Fortunately the HiDPI support on Linux & Qt & KDE has gone a long way since my initial try 2015 and now, with some scaling of 1.5 or 2, it is all nicely usable ;=) - -Given I still have some macOS machines available at work, I might still try out some Kate bundles there from time to time, but my personal life is now macOS free. - diff --git a/content/posts/manjaro-with-kde-on-a-macbook-pro/index.md b/content/posts/manjaro-with-kde-on-a-macbook-pro/index.md new file mode 100644 index 0000000..2e9c15e --- /dev/null +++ b/content/posts/manjaro-with-kde-on-a-macbook-pro/index.md @@ -0,0 +1,76 @@ +--- +title: "Manjaro with KDE on a MacBook Pro" +date: 2020-01-14T21:22:00+02:00 +draft: false +categories: [KDE, Kate, macOS] +tags: [KDE, Kate, macOS] +url: /posts/manjaro-with-kde-on-a-macbook-pro.md/ +author: "Christoph Cullmann" +--- + +I bought a MacBook end of 2014. +My initial reason to buy it was to [improve the Kate port](https://kate-editor.org/2015/01/03/kate5-on-mac/) for macOS. +Beside that, I wanted to try if the Apple ecosystem and macOS are really that great and will solve all my issues in life (short answer: no, they aren't, at least not for me). +The HiDPI screen looked nice, too :=) + +After some initial "not a lot works", if you don't go the [Homebrew](https://brew.sh/) or [MacPorts](https://www.macports.org/) way, the Kate port improved over the following years. + +I learned a lot about standalone non-Linux deployment of applications and macOS specifics in the process. + +As a side-effect of my porting efforts, with the help of others, I was able to improve the deployment of [KDE Frameworks](https://api.kde.org/frameworks/index.html) in some ways, e.g. by allowing to bundle more stuff inside [Qt resources](https://doc.qt.io/qt-5/resources.html). + +For example the [KSyntaxHighlighting](https://api.kde.org/frameworks/syntax-highlighting/html/index.html) or [KTextEditor](https://api.kde.org/frameworks/ktexteditor/html/index.html) frameworks are now just a library you link, you don't need to deploy any extra data files. +This is a huge improvement, if you want to bundle them with your standalone application. + +Unfortunately, my initial hope, that we would get more people contributing to the macOS port (and with this to KTextEditor/Kate/...) didn't really take off. + +Beside some minimal help, not a lot happened. + +I think my last self-provided bundle update for macOS was in [2016](https://kate-editor.org/2016/06/16/new-katekwrite-bundles-for-mac/). + +The binary factory still churns out new builds, you can grab them via the links on our [download page](https://kate-editor.org/get-it/). + +I occasionally tried them, but they never got polished in a way like our Windows variants that we now even ship via the [Windows Store](https://www.microsoft.com/store/apps/9NWMW7BB59HW). + +Apple doesn't make the world a better place with each update of macOS, see for example the now necessary notarized builds and the effort the cause for e.g. [Krita](https://krita.org/en/item/first-notarized-macos-build-of-krita/) +(and with necessary I mean: you shall do it, otherwise your users are nagged with "do you really want to execute this..." stuff that makes a very bad impression). + +In the last years, I used my MacBook more or less just to either grab some stuff from iTunes or do stuff inside my Linux VirtualBox there. + +Given I anyways have a proper Windows 10 VM to take care of the Windows development for Kate (yes, Apple, Microsoft allows that officially, you can just buy a license, you can even get some 'free' developer VM images for a fixed time...), I just migrated my seldom used iTunes account to that machine. + +With that away, I just installed purely [Manjaro Linux](https://manjaro.org/) on my MacBook last evening, who cares, I anyways don't use macOS at all beside as VirtualBox startup environment. + +I searched for some pointers in the internet, in the past I already had some parallel install. +If you search a bit, you will find various hints how to do it. + +If people want to do the same as me, a pure Manjaro install without keeping any macOS around, here a minimal how-to for a MacBook Pro Retina 13" (model number MGX82**/A, model id MacBookPro11,1): + +* Get the USB installer from their [Manjaro Linux](https://manjaro.org/) homepage, I used the KDE variant ;=) + +* Get it on a stick and plug it into your MacBook + +* Boot up your MacBook (pressing the ALT key) + +* Select the EFI boot option. + +* Start the live system, like on any other machine + +* If you want to have internet, which is a good idea to e.g. later easily install the Broadcom driver, use your mobile phone with USB-tethering + +* Install it normally, I used the "erase my full drive and encrypt it" variant. Be careful, your data is gone afterwards, you got warned! + +* Reboot your MacBook, you will boot into your fresh installed Manjaro + +* Install the matching Broadcom driver for your kernel, something like "linux54-broadcom-wl" + +* Install some fan control like "mbpfan-git" and enable it afterwards with "sudo systemctl enable mbpfan" + "sudo systemctl start mbpfan" + +For me this did the job and the stuff is running well enough. +The webcam won't work without additional effort, not that I use it. +No idea if Bluetooth or other stuff like the Thunderbolt ports work, but I never used that even on macOS. + +Fortunately the HiDPI support on Linux & Qt & KDE has gone a long way since my initial try 2015 and now, with some scaling of 1.5 or 2, it is all nicely usable ;=) + +Given I still have some macOS machines available at work, I might still try out some Kate bundles there from time to time, but my personal life is now macOS free. + diff --git a/content/posts/new-website.md b/content/posts/new-website.md deleted file mode 100644 index beafa0c..0000000 --- a/content/posts/new-website.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "New Website" -date: 2019-04-06T18:18:00+02:00 -draft: false -categories: [www] -tags: [hugo] -url: /posts/new-website/ -author: "Christoph Cullmann" ---- - -After several years of failing to update my personal WordPress page, I restarted my website with the [Hugo framework](https://gohugo.io/). - -The new website uses zero cookies (yes, no stupid cookie question) and no kind of analytic software. - -I hope my [Impressum](/impressum/) is done well enough to avoid any legal issues. - -At the moment the website is still very empty, I hope to fill in more content about my open source projects and academic stuff in the near future. diff --git a/content/posts/new-website/index.md b/content/posts/new-website/index.md new file mode 100644 index 0000000..beafa0c --- /dev/null +++ b/content/posts/new-website/index.md @@ -0,0 +1,17 @@ +--- +title: "New Website" +date: 2019-04-06T18:18:00+02:00 +draft: false +categories: [www] +tags: [hugo] +url: /posts/new-website/ +author: "Christoph Cullmann" +--- + +After several years of failing to update my personal WordPress page, I restarted my website with the [Hugo framework](https://gohugo.io/). + +The new website uses zero cookies (yes, no stupid cookie question) and no kind of analytic software. + +I hope my [Impressum](/impressum/) is done well enough to avoid any legal issues. + +At the moment the website is still very empty, I hope to fill in more content about my open source projects and academic stuff in the near future. diff --git a/content/posts/privacy-and-hugo-themes.md b/content/posts/privacy-and-hugo-themes.md deleted file mode 100644 index 82e35ef..0000000 --- a/content/posts/privacy-and-hugo-themes.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Privacy and Hugo Themes" -date: 2019-04-07T17:10:00+02:00 -draft: false -categories: [www] -tags: [hugo, privacy] -url: /posts/privacy-and-hugo-themes/ -author: "Christoph Cullmann" ---- - -I use the "Hugo Coder" theme for this page. - -After creating the [privacy page (Impressum)](/impressum/), I did take a closer look at the generated HTML code to confirm I didn't miss to state things there. - -I thought, given Hugo generates plain static HTML pages, I would be on the safe side. - -But unfortunately, the theme I use includes some external resources, like the Google web fonts... - -I now patched that out in my [fork](https://github.com/christoph-cullmann/hugo-coder) of the theme and provide local copies on my own server. - -The local mirrored files can be found [here](https://github.com/christoph-cullmann/cullmann.io/tree/master/static). - -Actually, this shows, for a "normal" user, it is really hard to ensure no privacy violations are on his/her/... website, given you need to control each and every page. - -This is already ugly with static pages, like the stuff generated here (and I hope I missed nothing), but with dynamic websites this is... diff --git a/content/posts/privacy-and-hugo-themes/index.md b/content/posts/privacy-and-hugo-themes/index.md new file mode 100644 index 0000000..82e35ef --- /dev/null +++ b/content/posts/privacy-and-hugo-themes/index.md @@ -0,0 +1,25 @@ +--- +title: "Privacy and Hugo Themes" +date: 2019-04-07T17:10:00+02:00 +draft: false +categories: [www] +tags: [hugo, privacy] +url: /posts/privacy-and-hugo-themes/ +author: "Christoph Cullmann" +--- + +I use the "Hugo Coder" theme for this page. + +After creating the [privacy page (Impressum)](/impressum/), I did take a closer look at the generated HTML code to confirm I didn't miss to state things there. + +I thought, given Hugo generates plain static HTML pages, I would be on the safe side. + +But unfortunately, the theme I use includes some external resources, like the Google web fonts... + +I now patched that out in my [fork](https://github.com/christoph-cullmann/hugo-coder) of the theme and provide local copies on my own server. + +The local mirrored files can be found [here](https://github.com/christoph-cullmann/cullmann.io/tree/master/static). + +Actually, this shows, for a "normal" user, it is really hard to ensure no privacy violations are on his/her/... website, given you need to control each and every page. + +This is already ugly with static pages, like the stuff generated here (and I hope I missed nothing), but with dynamic websites this is... diff --git a/content/posts/qt-creator-4-9-uses-ksyntaxhighlighting.md b/content/posts/qt-creator-4-9-uses-ksyntaxhighlighting.md deleted file mode 100644 index 84b6989..0000000 --- a/content/posts/qt-creator-4-9-uses-ksyntaxhighlighting.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Qt Creator 4.9 uses KSyntaxHighlighting" -date: 2019-04-16T20:45:00+02:00 -draft: false -categories: [kde, qt, development] -tags: [kde, qt] -url: /posts/qt-creator-4-9-uses-ksyntaxhighlighting/ -author: "Christoph Cullmann" ---- - -As you can read in the [official Creator 4.9.0 release announcement](https://blog.qt.io/blog/2019/04/15/qt-creator-4-9-0-released/), Qt Creator now uses the [KSyntaxHighlighting Framework](https://api.kde.org/frameworks/syntax-highlighting/html/index.html) for providing the [generic highlighting](https://doc.qt.io/qtcreator/creator-highlighting.html#generic-highlighting). - -This is a nice step for the wider adoption of this [MIT](https://opensource.org/licenses/MIT) licensed part of the [KDE Frameworks](https://api.kde.org/frameworks/index.html). - -And this is not just an one-way consumption of our work. - -The framework got actively patches back that make it more usable for other consumers, too, like [Kate](https://kate-editor.org) ;=) - -If you want concrete examples, take a look at: - -* D18982: [prevent assertion in regex load](https://phabricator.kde.org/D18982) -* D18996: [Fix building with namespaced Qt](https://phabricator.kde.org/D18996) -* D18997: [Add functions returning all definitions for a mimetype or file name](https://phabricator.kde.org/D18997) -* D19200: [Return sorted definitions for file names and mime types](https://phabricator.kde.org/D19200) -* D19215: [Install DefinitionDownloader header](https://phabricator.kde.org/D19215) - -I hope this cooperation will continue in the future. -I thank the people working on Qt Creator that made this integration possible. -I hope the initial effort will pay of with less code for them to maintain on their own and more improvements of the framework for all users. diff --git a/content/posts/qt-creator-4-9-uses-ksyntaxhighlighting/index.md b/content/posts/qt-creator-4-9-uses-ksyntaxhighlighting/index.md new file mode 100644 index 0000000..84b6989 --- /dev/null +++ b/content/posts/qt-creator-4-9-uses-ksyntaxhighlighting/index.md @@ -0,0 +1,29 @@ +--- +title: "Qt Creator 4.9 uses KSyntaxHighlighting" +date: 2019-04-16T20:45:00+02:00 +draft: false +categories: [kde, qt, development] +tags: [kde, qt] +url: /posts/qt-creator-4-9-uses-ksyntaxhighlighting/ +author: "Christoph Cullmann" +--- + +As you can read in the [official Creator 4.9.0 release announcement](https://blog.qt.io/blog/2019/04/15/qt-creator-4-9-0-released/), Qt Creator now uses the [KSyntaxHighlighting Framework](https://api.kde.org/frameworks/syntax-highlighting/html/index.html) for providing the [generic highlighting](https://doc.qt.io/qtcreator/creator-highlighting.html#generic-highlighting). + +This is a nice step for the wider adoption of this [MIT](https://opensource.org/licenses/MIT) licensed part of the [KDE Frameworks](https://api.kde.org/frameworks/index.html). + +And this is not just an one-way consumption of our work. + +The framework got actively patches back that make it more usable for other consumers, too, like [Kate](https://kate-editor.org) ;=) + +If you want concrete examples, take a look at: + +* D18982: [prevent assertion in regex load](https://phabricator.kde.org/D18982) +* D18996: [Fix building with namespaced Qt](https://phabricator.kde.org/D18996) +* D18997: [Add functions returning all definitions for a mimetype or file name](https://phabricator.kde.org/D18997) +* D19200: [Return sorted definitions for file names and mime types](https://phabricator.kde.org/D19200) +* D19215: [Install DefinitionDownloader header](https://phabricator.kde.org/D19215) + +I hope this cooperation will continue in the future. +I thank the people working on Qt Creator that made this integration possible. +I hope the initial effort will pay of with less code for them to maintain on their own and more improvements of the framework for all users. diff --git a/content/posts/removing-files-from-git-history.md b/content/posts/removing-files-from-git-history.md deleted file mode 100644 index 45296e7..0000000 --- a/content/posts/removing-files-from-git-history.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "Removing Files from Git History" -date: 2019-04-15T20:07:00+02:00 -draft: false -categories: [git, development] -tags: [git] -url: /posts/removing-files-from-git-history/ -author: "Christoph Cullmann" ---- - -Today I did run again into an old problem: -You need to archive a lot small and large files inside a single Git repository and you have no support for [Git LFS](https://git-lfs.github.com/) available. -You did this several year and now you ended up in a state where cloning and working with the repository is unbearable slow. - -What now? Last time I did run into that, I archived the overfull repository to some "rest in peace" space and used `git filter-branch` to filter out no longer needed and too large objects from a repository copy that then will replace the old one for daily use. - -There are a lot of guides available how to use `git filter-branch` for that. -All variants I ever used were complex to do and did take very long. -Especially if you need several tries to get a sane set of stuff you want to remove to gain enough space savings. - -This time, I searched once more and stumbled on the [BFG Repo-Cleaner](https://rtyley.github.io/bfg-repo-cleaner/). -And yes, it does what it promises on the web site and it seems to be trusted enough to be advertised by e.g. [GitHub](https://help.github.com/en/articles/removing-sensitive-data-from-a-repository), too. - -Just following the steps described on their [landing page](https://rtyley.github.io/bfg-repo-cleaner/) allows to shrink your stuff nicely and without a lot of round-trip time. - -If you still are just in the "experimenting" phase to see which space decrease one can archive with which file size filter (or which files you want to purge by removing them from master before running the tool), I recommend to swap the step - -{{< highlight bash >}} -git reflog expire --expire=now --all && git gc --prune=now --aggressive -{{< / highlight >}} - -with just - -{{< highlight bash >}} -git reflog expire --expire=now --all && git gc --prune=now -{{< / highlight >}} - -to not wait potential hours for the aggressive GC. -For me that was good enough to get some estimate of the later size for my experiments before I settled to some final settings and did the real run. - -And as always, if you touch your Git history: **Do that only if you really need to, keep backups, check carefully that afterwards the repository is in some sensible state (`git fsck --strict` is your friend) and inform all people using that repository that they will need to do a full new clone.** diff --git a/content/posts/removing-files-from-git-history/index.md b/content/posts/removing-files-from-git-history/index.md new file mode 100644 index 0000000..45296e7 --- /dev/null +++ b/content/posts/removing-files-from-git-history/index.md @@ -0,0 +1,41 @@ +--- +title: "Removing Files from Git History" +date: 2019-04-15T20:07:00+02:00 +draft: false +categories: [git, development] +tags: [git] +url: /posts/removing-files-from-git-history/ +author: "Christoph Cullmann" +--- + +Today I did run again into an old problem: +You need to archive a lot small and large files inside a single Git repository and you have no support for [Git LFS](https://git-lfs.github.com/) available. +You did this several year and now you ended up in a state where cloning and working with the repository is unbearable slow. + +What now? Last time I did run into that, I archived the overfull repository to some "rest in peace" space and used `git filter-branch` to filter out no longer needed and too large objects from a repository copy that then will replace the old one for daily use. + +There are a lot of guides available how to use `git filter-branch` for that. +All variants I ever used were complex to do and did take very long. +Especially if you need several tries to get a sane set of stuff you want to remove to gain enough space savings. + +This time, I searched once more and stumbled on the [BFG Repo-Cleaner](https://rtyley.github.io/bfg-repo-cleaner/). +And yes, it does what it promises on the web site and it seems to be trusted enough to be advertised by e.g. [GitHub](https://help.github.com/en/articles/removing-sensitive-data-from-a-repository), too. + +Just following the steps described on their [landing page](https://rtyley.github.io/bfg-repo-cleaner/) allows to shrink your stuff nicely and without a lot of round-trip time. + +If you still are just in the "experimenting" phase to see which space decrease one can archive with which file size filter (or which files you want to purge by removing them from master before running the tool), I recommend to swap the step + +{{< highlight bash >}} +git reflog expire --expire=now --all && git gc --prune=now --aggressive +{{< / highlight >}} + +with just + +{{< highlight bash >}} +git reflog expire --expire=now --all && git gc --prune=now +{{< / highlight >}} + +to not wait potential hours for the aggressive GC. +For me that was good enough to get some estimate of the later size for my experiments before I settled to some final settings and did the real run. + +And as always, if you touch your Git history: **Do that only if you really need to, keep backups, check carefully that afterwards the repository is in some sensible state (`git fsck --strict` is your friend) and inform all people using that repository that they will need to do a full new clone.** diff --git a/content/posts/webserver-transition.md b/content/posts/webserver-transition.md deleted file mode 100644 index 63d0de3..0000000 --- a/content/posts/webserver-transition.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Web-Server Transition" -date: 2019-04-08T23:59:00+02:00 -draft: false -categories: [www] -tags: [centos, apache, mariadb] -url: /posts/webserver-transition/ -author: "Christoph Cullmann" ---- - -Several years the [kate-editor.org](https://kate-editor.org) & [cullmann.io](https://cullmann.io) pages got hosted on a [Hetzner](https://www.hetzner.de/) root server. -To reduce costs and switch away from old hardware they got now moved to an [OpenVZ](https://openvz.org/) based virtual server at [Host Europe](https://www.hosteurope.de). - -On both servers [CentOS](https://centos.org) 7.x is running, it did always provide a stable foundation for the services these sites use. - -As with any server move in the past, I always need to search how to best move the data/config from one server to the other. -To document this for me and others, here the quick way to move the basic things needed for web services using just plain [Apache](https://httpd.apache.org/) & [MariaDB](https://mariadb.org/). - -The following steps assume you have installed the same packages on both machines and the new machine is allowed to ssh as root to the old one. -If you have non-system users, you should create them with the same ids as on the old server. - -For the following shell commands, the old server address is $SERV and the MariaDB root password is $PASS on both machines. -Best use the raw IP as address if you are in parallel updating your DNS entries to avoid confusion (and wrong syncs). - -**Attention: Wrong syncing of stuff can have disastrous consequences! Check all commands again before executing them, don't trust random people like me without verification!** - -* sync your data, assuming it is in /home and /srv/(ftp/www) - -{{< highlight bash >}} -rsync --delete -av root@$SERV:/home/ /home -rsync --delete -av root@$SERV:/srv/ftp /srv -rsync --delete -av root@$SERV:/srv/www /srv -{{< / highlight >}} - -* transfer your databases - -{{< highlight bash >}} -ssh root@$SERV "mysqldump -u root -p$PASS --all-databases > /root/db.sql" -scp root@$SERV:/root/db.sql /root/ -mysql -u root -p$PASS < /root/db.sql -{{< / highlight >}} - -* sync configs (you might need more, this is just apache & vsftp) - -{{< highlight bash >}} -rsync --delete -av root@$SERV:/etc/httpd /etc -rsync --delete -av root@$SERV:/etc/letsencrypt /etc -rsync --delete -av root@$SERV:/etc/vsftpd /etc -{{< / highlight >}} - -* get crontabs over for later re-use, store them in the root home - -{{< highlight bash >}} -rsync --delete -av root@$SERV:/var/spool/cron /root -{{< / highlight >}} - -Now all things should be there and after some service restarts e.g. [WordPress](https://wordpress.org/) powered pages should be up-and-running again. - -I hope this short how-to helps others and allows me to avoid searching stuff in the future once again from scratch. diff --git a/content/posts/webserver-transition/index.md b/content/posts/webserver-transition/index.md new file mode 100644 index 0000000..63d0de3 --- /dev/null +++ b/content/posts/webserver-transition/index.md @@ -0,0 +1,59 @@ +--- +title: "Web-Server Transition" +date: 2019-04-08T23:59:00+02:00 +draft: false +categories: [www] +tags: [centos, apache, mariadb] +url: /posts/webserver-transition/ +author: "Christoph Cullmann" +--- + +Several years the [kate-editor.org](https://kate-editor.org) & [cullmann.io](https://cullmann.io) pages got hosted on a [Hetzner](https://www.hetzner.de/) root server. +To reduce costs and switch away from old hardware they got now moved to an [OpenVZ](https://openvz.org/) based virtual server at [Host Europe](https://www.hosteurope.de). + +On both servers [CentOS](https://centos.org) 7.x is running, it did always provide a stable foundation for the services these sites use. + +As with any server move in the past, I always need to search how to best move the data/config from one server to the other. +To document this for me and others, here the quick way to move the basic things needed for web services using just plain [Apache](https://httpd.apache.org/) & [MariaDB](https://mariadb.org/). + +The following steps assume you have installed the same packages on both machines and the new machine is allowed to ssh as root to the old one. +If you have non-system users, you should create them with the same ids as on the old server. + +For the following shell commands, the old server address is $SERV and the MariaDB root password is $PASS on both machines. +Best use the raw IP as address if you are in parallel updating your DNS entries to avoid confusion (and wrong syncs). + +**Attention: Wrong syncing of stuff can have disastrous consequences! Check all commands again before executing them, don't trust random people like me without verification!** + +* sync your data, assuming it is in /home and /srv/(ftp/www) + +{{< highlight bash >}} +rsync --delete -av root@$SERV:/home/ /home +rsync --delete -av root@$SERV:/srv/ftp /srv +rsync --delete -av root@$SERV:/srv/www /srv +{{< / highlight >}} + +* transfer your databases + +{{< highlight bash >}} +ssh root@$SERV "mysqldump -u root -p$PASS --all-databases > /root/db.sql" +scp root@$SERV:/root/db.sql /root/ +mysql -u root -p$PASS < /root/db.sql +{{< / highlight >}} + +* sync configs (you might need more, this is just apache & vsftp) + +{{< highlight bash >}} +rsync --delete -av root@$SERV:/etc/httpd /etc +rsync --delete -av root@$SERV:/etc/letsencrypt /etc +rsync --delete -av root@$SERV:/etc/vsftpd /etc +{{< / highlight >}} + +* get crontabs over for later re-use, store them in the root home + +{{< highlight bash >}} +rsync --delete -av root@$SERV:/var/spool/cron /root +{{< / highlight >}} + +Now all things should be there and after some service restarts e.g. [WordPress](https://wordpress.org/) powered pages should be up-and-running again. + +I hope this short how-to helps others and allows me to avoid searching stuff in the future once again from scratch. -- cgit v1.2.3