Maximum number of libraries in one web

I’ve been having a look at this link as I’m looking at the options for a document repository with high volume and a rather complex security matrix.

I can see most of the limits I need to start playing with the IA options and pivoting the metadata around but I can’t see how many libraries I can have in one site.

The boundaries mention how to get up to 250.000 sites. that’s actually more than what I need, but site level might be an option for us. I was wondering if I could take it one level down. I was thinking of something like 20.000 libraries in a site.

Has anyone done anything like this? Any tips?

Struggling to build Qt due to missing OpenGL libraries

I’m trying to build an executable Qt-based program for Linux, and link Qt statically in the binary. According to the Qt docs, to do this I’m going to need to build Qt from source, starting with the commands:

cd /path/to/Qt ./configure -static -prefix /path/to/Qt 

when I try this, I get a long bunch of output ending with:

ERROR: The OpenGL functionality tests failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2], QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform.  Check config.log for details. 

This isn’t the first time I had problems with OpenGL and Qt… when I built my program with dynamic linking (using binary Qt libs) I got a similar problem, which I solved by symlinking to libGL.so from /usr/lib.

The output from configure said to go and find the “mkspec” for my platform, so I looked at Qt/5.13.1/Src/qtbase/mkspecs/linux-g++-64 (I explicitly told it to use that platform with the -platform command). I rooted around and tried setting those envvars to various combinations of paths that seemed plausible, to no avail.

It also mentioned a config.log file. When I look in this file, I can see open GL mentioned only in this block:

loaded result for library config.qtbase_gui.libraries.opengl Trying source 0 (type pkgConfig) of library opengl ... + /usr/bin/pkg-config --exists --silence-errors gl pkg-config did not find package.   => source produced no result. Trying source 1 (type makeSpec) of library opengl ... Include path /usr/include/libdrm is invalid. header entry 'config.qtbase_gui.libraries.opengl.headers.0' passed condition. GL/gl.h not found in [/usr/include/libdrm] and global paths.   => source produced no result. test config.qtbase_gui.libraries.opengl FAILED loaded result for library config.qtbase_gui.libraries.opengl_es2 Trying source 0 (type pkgConfig) of library opengl_es2 ... + /usr/bin/pkg-config --exists --silence-errors glesv2 pkg-config did not find package.   => source produced no result. Trying source 1 (type makeSpec) of library opengl_es2 ... None of [libGLESv2.so libGLESv2.a] found in [] and global paths.   => source produced no result. test config.qtbase_gui.libraries.opengl_es2 FAILED 

Indeed pkg-config --print-errors --exists gl can’t find anything. No idea where it’s getting that /usr/include/libdrm path…

Moving Folders Between Libraries in Different Sites Leaves Copies in Both

When I moved a folder from Site 1 Doc Library to Site 2 Doc Library (modern experience in both, btw), I ended up with copies in both locations. Is this expected behavior, that it doesn’t actually MOVE the files? Does this mean that the files in the new location will not retain their Doc IDs and links, as well? Thanks, in advance!

What’s the difference between ffmpeg static libraries form ubuntu and from mine that I compiled?

I tried ffmpeg from ubuntu repositories and linking them was as easy as just doing -lavcodec -lavuitl .... I then compiled mine with these configurations:

    ./configure \     --prefix=$  {BUILD_DIR}/desktop/x86_64 \     --extra-cflags="-I$  HOME/ffmpeg_build/include" \     --extra-ldflags="-L$  HOME/ffmpeg_build/lib" \     --enable-shared \     --arch=x86_64 \     --enable-vaapi \     --disable-vaapi \     --enable-opencl \     --disable-debug \     --enable-nvenc \     --enable-cuda \     --enable-cuvid \     --enable-libvpx \     --enable-libdrm \     --enable-gpl \     --enable-runtime-cpudetect \     --enable-libfdk-aac \     --enable-libx264 \     --enable-openssl \     --enable-pic \     --extra-libs="-lpthread -lm -lz -ldl" \     --enable-nonfree  

And it generated static libraries just like those provided by ubuntu repositories. However, I cannot simply link them with -lavcodec -lavuitl ... because I get lots of undefined references, like

../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacdec.o): In function `fdk_aac_decode_frame': libfdk-aacdec.c:(.text+0x4f): undefined reference to `aacDecoder_Fill' libfdk-aacdec.c:(.text+0x6d): undefined reference to `aacDecoder_DecodeFrame' libfdk-aacdec.c:(.text+0x8d): undefined reference to `aacDecoder_GetStreamInfo' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacdec.o): In function `fdk_aac_decode_close': libfdk-aacdec.c:(.text.unlikely+0xf): undefined reference to `aacDecoder_Close' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacdec.o): In function `fdk_aac_decode_init': libfdk-aacdec.c:(.text.unlikely+0x45): undefined reference to `aacDecoder_Open' libfdk-aacdec.c:(.text.unlikely+0x82): undefined reference to `aacDecoder_ConfigRaw' libfdk-aacdec.c:(.text.unlikely+0xb7): undefined reference to `aacDecoder_SetParam' libfdk-aacdec.c:(.text.unlikely+0x129): undefined reference to `aacDecoder_SetParam' libfdk-aacdec.c:(.text.unlikely+0x187): undefined reference to `aacDecoder_AncDataInit' libfdk-aacdec.c:(.text.unlikely+0x1ac): undefined reference to `aacDecoder_SetParam' libfdk-aacdec.c:(.text.unlikely+0x1d1): undefined reference to `aacDecoder_SetParam' libfdk-aacdec.c:(.text.unlikely+0x1f2): undefined reference to `aacDecoder_SetParam' libfdk-aacdec.c:(.text.unlikely+0x213): undefined reference to `aacDecoder_SetParam' libfdk-aacdec.c:(.text.unlikely+0x22f): undefined reference to `aacDecoder_SetParam' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacdec.o):libfdk-aacdec.c:(.text.unlikely+0x250): more undefined references to `aacDecoder_SetParam' follow ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacenc.o): In function `aac_encode_close': libfdk-aacenc.c:(.text+0xf9): undefined reference to `aacEncClose' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacenc.o): In function `aac_encode_frame': libfdk-aacenc.c:(.text+0x2c1): undefined reference to `aacEncEncode' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacenc.o): In function `aac_encode_init': libfdk-aacenc.c:(.text.unlikely+0x3c): undefined reference to `aacEncOpen' libfdk-aacenc.c:(.text.unlikely+0x7c): undefined reference to `aacEncoder_SetParam' libfdk-aacenc.c:(.text.unlikely+0xb8): undefined reference to `aacEncoder_SetParam' libfdk-aacenc.c:(.text.unlikely+0xfa): undefined reference to `aacEncoder_SetParam' libfdk-aacenc.c:(.text.unlikely+0x180): undefined reference to `aacEncoder_SetParam' libfdk-aacenc.c:(.text.unlikely+0x25d): undefined reference to `aacEncoder_SetParam' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacenc.o):libfdk-aacenc.c:(.text.unlikely+0x28d): more undefined references to `aacEncoder_SetParam' follow ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libfdk-aacenc.o): In function `aac_encode_init': libfdk-aacenc.c:(.text.unlikely+0x567): undefined reference to `aacEncEncode' libfdk-aacenc.c:(.text.unlikely+0x5a1): undefined reference to `aacEncInfo' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxdec.o): In function `vpx_decode': libvpxdec.c:(.text+0x58): undefined reference to `vpx_codec_decode' libvpxdec.c:(.text+0xa2): undefined reference to `vpx_codec_get_frame' libvpxdec.c:(.text+0x10c): undefined reference to `vpx_codec_error' libvpxdec.c:(.text+0x117): undefined reference to `vpx_codec_error_detail' libvpxdec.c:(.text+0x19e): undefined reference to `vpx_codec_decode' libvpxdec.c:(.text+0x1ae): undefined reference to `vpx_codec_error' libvpxdec.c:(.text+0x1ca): undefined reference to `vpx_codec_get_frame' libvpxdec.c:(.text+0x560): undefined reference to `vpx_codec_vp9_dx_algo' libvpxdec.c:(.text+0x58f): undefined reference to `vpx_codec_vp8_dx_algo' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxdec.o): In function `vpx_free': libvpxdec.c:(.text.unlikely+0x9): undefined reference to `vpx_codec_destroy' libvpxdec.c:(.text.unlikely+0x18): undefined reference to `vpx_codec_destroy' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxdec.o): In function `vpx_init': libvpxdec.c:(.text.unlikely+0x87): undefined reference to `vpx_codec_version_str' libvpxdec.c:(.text.unlikely+0xa5): undefined reference to `vpx_codec_build_config' libvpxdec.c:(.text.unlikely+0xdf): undefined reference to `vpx_codec_dec_init_ver' libvpxdec.c:(.text.unlikely+0xed): undefined reference to `vpx_codec_error' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxdec.o): In function `vp8_init': libvpxdec.c:(.text.unlikely+0x134): undefined reference to `vpx_codec_vp8_dx_algo' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxdec.o): In function `vp9_init': libvpxdec.c:(.text.unlikely+0x142): undefined reference to `vpx_codec_vp9_dx_algo' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxenc.o): In function `vpx_encode': libvpxenc.c:(.text+0xda): undefined reference to `vpx_codec_encode' libvpxenc.c:(.text+0x2b3): undefined reference to `vpx_codec_encode' libvpxenc.c:(.text+0x33a): undefined reference to `vpx_codec_get_cx_data' libvpxenc.c:(.text+0x3cd): undefined reference to `vpx_codec_get_cx_data' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxenc.o): In function `log_encoder_error': libvpxenc.c:(.text.unlikely+0x351): undefined reference to `vpx_codec_error' libvpxenc.c:(.text.unlikely+0x35c): undefined reference to `vpx_codec_error_detail' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxenc.o): In function `codecctl_int': libvpxenc.c:(.text.unlikely+0x43a): undefined reference to `vpx_codec_control_' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxenc.o): In function `vpx_init': libvpxenc.c:(.text.unlikely+0x4fb): undefined reference to `vpx_codec_get_caps' libvpxenc.c:(.text.unlikely+0x503): undefined reference to `vpx_codec_version_str' libvpxenc.c:(.text.unlikely+0x521): undefined reference to `vpx_codec_build_config' libvpxenc.c:(.text.unlikely+0x563): undefined reference to `vpx_codec_enc_config_default' libvpxenc.c:(.text.unlikely+0x573): undefined reference to `vpx_codec_err_to_string' libvpxenc.c:(.text.unlikely+0xc2c): undefined reference to `vpx_codec_enc_init_ver' libvpxenc.c:(.text.unlikely+0xc86): undefined reference to `vpx_codec_enc_init_ver' libvpxenc.c:(.text.unlikely+0xffb): undefined reference to `vpx_img_wrap' libvpxenc.c:(.text.unlikely+0x1040): undefined reference to `vpx_img_wrap' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxenc.o): In function `vp8_init': libvpxenc.c:(.text.unlikely+0x10be): undefined reference to `vpx_codec_vp8_cx' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxenc.o): In function `vp9_init': libvpxenc.c:(.text.unlikely+0x10d3): undefined reference to `vpx_codec_vp9_cx' ../../../deps/ffmpeg/build/desktop/x86_64/lib/libavcodec.a(libvpxenc.o): In function `vpx_free': ... 

How it it possible for ubuntu to not have to rely on x264, libfdk-aacdec, libvpxdec, etc but when I use my compiled libraries I have to provide them?

Installing libraries for arm64 on ubuntu bionic x64

I want to install arm64 libraries in my ubuntu bionic so I can link using cmake for cross compiling. Here’s what I’m doing, based on https://askubuntu.com/a/994650/613425

dpkg --add-architecture arm64\ && echo "deb [arch=arm64] http://ports.ubuntu.com/ bionic main restricted\n\ deb [arch=arm64] http://ports.ubuntu.com/ bionic-updates main restricted\n\ deb [arch=arm64] http://ports.ubuntu.com/ bionic universe\n\ deb [arch=arm64] http://ports.ubuntu.com/ bionic-updates universe\n\ deb [arch=arm64] http://ports.ubuntu.com/ bionic multiverse\n\ deb [arch=arm64] http://ports.ubuntu.com/ bionic-updates multiverse\n\ deb [arch=arm64] http://ports.ubuntu.com/ bionic-backports main restricted universe multiverse"\ | tee -a /etc/apt/sources.list 

gives me

E: Failed to fetch http://security.ubuntu.com/ubuntu/dists/bionic-security/universe/binary-arm64/Packages  404  Not Found [IP: 91.189.88.162 80] E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic/restricted/binary-arm64/Packages  404  Not Found [IP: 91.189.88.174 80] E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic-updates/universe/binary-arm64/Packages  404  Not Found [IP: 91.189.88.174 80] E: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic-backports/main/binary-arm64/Packages  404  Not Found [IP: 91.189.88.174 80] E: Some index files failed to download. They have been ignored, or old ones used instead. 

Co-Authoring for Office documents inside sharepoint document libraries, can we do it when opening the documents using desktop applications

One of the features end-users always use, is the co-authoring of Office documents mainly excel sheet, where they open the excel sheet inside the browser, and 2 or more users can edit the document at the same time. but i am not sure if we can still have the co-authoring capabilities, in those cases:-

  1. if 2 users edit the excel sheet using their desktop excel applications?
  2. one user edit the excel sheet using the browser while the other edit the document using the desktop app?

Now i tested the above 2 scenarios, and they did not work out-of-the-box, as when i try to edit the document using the second user, i will get the document as read-only and if i try to edit it, i will get an error message that the docuemnt is locked by the first user. so can i say that co-authoring for the documents inside sharepoint will only work if all users edit the excel sheet using the browsers?

Microservices and shared libraries

We are designing a system based on independent microservices (connected via a RabbitMq bus). The code will (for the first components at least) be written in python (both python2 and python3). We have already a monolith application implementing some of the business logic, which we want to refactor as microservices, and extend. One question that worries me is:

What is the best way to share code between the different microservices. We have common helper functions (data processing, logging, configuration parsing, etc), which must be used by several microservices.

The microservices themselves are going to be developed as separate projects (git repositories). The common libraries can be developed as a self-contained project too. How do I share these libraries between the microservices?

I see several approaches:

  • copy around the version of the library that is needed for each microservice, and update as needed
  • release the common libraries to an internal PyPi, and list those libraries as dependencies in the microservice’s requirements
  • include the library repository as a git submodule

I would like to read a bit more about suggested approaches, best practices, past experiences before deciding on how to proceed. Do you have any suggestion or link?