我在OSX中有一个poperly沙盒应用程序,objective-c通过apple事件(例如Adobe InDesign)与第三方应用程序对话.
在OSX mojave中,一切都中断,因为Apple的新SIP(https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/Introduction/Introduction.html)不允许进行通信.
我还没有找到任何解决方案.任何帮助赞赏.
这是错误消息
__PRE__
这是对问题的一个非常好的总结:https: //www.felix-schwarz.org/blog/2018/06/apple-event-sandboxing-in-macos-mojave
我试图在Xcode中运行OpenCV项目,似乎有新的需要为C ++应用程序NSCameraUsageDescription提供info.plist。
2018-09-28 00:03:15.181948+0800 k_nearest_detector_v2[23505:710470] [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
Program ended with exit code: 9
Run Code Online (Sandbox Code Playgroud)
我该如何为C ++项目创建.plist文件,因为以前从未需要过它。
NSStatusItem.popUpMenu 已在macOS 10.14中弃用,但我找不到合适的替代方法。
let m = statusItem.menu!
statusItem.popUpMenu(m) // deprecated
Run Code Online (Sandbox Code Playgroud)
我尝试使用菜单和按钮直接弹出,但位置不正确。
let m1 = m.items.first!
m.popUp(positioning: m1, at: .zero, in: statusItem.button!)
Run Code Online (Sandbox Code Playgroud) 以下问题已部分回答,请参阅下面的解决方案部分。所以我发布这个部分是为了帮助其他人,而且因为我的解决方案还没有真正解决问题。
题
所以,问题是为什么以下技术(使用 python 的平台和套接字库)给出的主机名根据您连接的路由器给出不同的主机名,以及为什么它也不同于计算机名和本地主机名。顺便说一下,这也是非常特定于 mac 的。
首先,我使用的是配备 High Sierra 10.13.6 的 MacBook pro 2015 型号。我使用终端并执行以下操作:
import platform
platform.node()
Run Code Online (Sandbox Code Playgroud)
根据分配给 MacBook 的 IP 地址,这给了我类似“192-168-1-4.tpgi.com.au”的信息。不同的路由器给出不同的结果。我也得到了类似的结果
import socket
socket.gethostname()
Run Code Online (Sandbox Code Playgroud)
它再次返回类似于“192-168-1-4.tpgi.com.au”的内容。
其次,我承认回答类似问题的文章 4271740/how-can-i-use-python-to-get-the-system-hostname
但是,这个问题略有不同,毕竟就我的应用程序的用户而言,主机名应该是他们在系统设置中可以看到的,实际上是不同的。如果我运行:
sudo scutil --get LocalHostName
Run Code Online (Sandbox Code Playgroud)
我得到系统设置中显示的名称(在共享下,它相当混乱地显示了计算机名称和本地主机名,它们也可以不同)。本地主机名与限定语句一起显示:
您本地网络上的计算机可以通过以下网址访问您的计算机:foo.local
所有这一切都是一个问题的原因是我的应用程序使用了主机名,这与 mac 上的本地主机名和计算机名不同。该主机名随后会出现在我们的用户界面中,当然,当其格式为“192-168-1-4.tpgi.com.au”时,它对识别用户的计算机没有帮助。用户很可能希望看到他们的计算机名称,因为这是可见的。在 Mac 上,主机名是不可见的,它可以通过命令设置或获取,但如果遇到这个问题,我们的用户自然不会想到它。
解决方案
所以问题与我相信如何开箱即用地设置 macs 相关。在mac上可以通过终端中使用以下命令来查询主机名:
hostname
192-168-1-4.tpgi.com.au
Run Code Online (Sandbox Code Playgroud)
这将返回实际用于解析 IP 地址的主机名。正如我上面提到的,这与计算机名称不匹配,这在使用我们的应用程序时往往会引起混淆。当我运行以下查询时,我发现了这一点。
sudo scutil --get HostName
HostName: not set
Run Code Online (Sandbox Code Playgroud)
所以我使用以下命令将主机名设置为我为机器识别的名称,如下所示
sudo scutil --set HostName foo
Run Code Online (Sandbox Code Playgroud)
现在,当我运行以下命令时,我得到了我和其他技术含量较低的用户所期望的结果。
import socket
socket.gethostname()
foo
import platform
platform.node()
foo
Run Code Online (Sandbox Code Playgroud)
最后只是为了更好的衡量,从我跑的终端
hostname
foo
Run Code Online (Sandbox Code Playgroud)
结论
好的,虽然我已经写了我找到了一个解决方案,但它并不是我真正需要的解决方案,问题是我需要显示用户设置的计算机名称,而不是主机名。由于我使用的是 …
python hostname computer-name macos-high-sierra macos-mojave
几天前,我刚刚升级到macOS Mojave,我发现Safari在我在Tumblr上创建的网站/主题上显示的字体存在问题。
似乎Safari还原回了Times New Roman的默认设置,我不确定为什么。这只是Safari中的一个问题。在FF和Chrome中查看网站时,字体是正确的。它也只在台式机上发生。iPhone和iPad上的视图显示正确的字体。
例如:http://romanoffsbite.tumblr.com
我在该站点上使用的字体是Calibri,在我升级到Mojave之前,它可以正确显示。现在,它在Times New Roman中加载,我无法弄清楚为什么或如何修复它。
我是在最后一天左右搜索此问题的,而我所能找到的就是解决在Mojave中显示为细而模糊的字体的解决方案,但是我发现没有什么可以解决不正确的问题显示的字体。
(细字体和模糊字体的解决方案确实有效)
对此的任何帮助将不胜感激,因为它真的开始成为一个问题,因为我在一家网页设计和开发公司工作,如果我看不到正确的字体,那么它永远也不会正确显示给我。
规格
同样,对此的任何帮助都将是惊人的!我不确定从这里还能去哪里,所以我来找大家了:)
谢谢!妮可
两天前升级到莫哈韦沙漠。Rails 服务器正在运行,但是当我尝试运行 activerecord 内容时,出现错误。当我尝试运行“Account.last”或“Account.new”或其他任何东西时,它会将我踢出去并出现以下错误
objc[38551]: +[__NSPlaceholderDictionary initialize] may have been in
progress in another thread when fork() was called.
objc[38551]: +[__NSPlaceholderDictionary initialize] may have been in
progress in another thread when fork() was called. We cannot safely
call it or ignore it in the fork() child process. Crashing instead. Set
a breakpoint on objc_initializeAfterForkError to debug.
Run Code Online (Sandbox Code Playgroud)
红宝石 2.3.4
导轨 5.1.6
卸载了一些 gems 并尝试但同样的错误。这两天快死了 而且我不仅仅是升级后面临这个问题的人。
我正在尝试在macOS Mojave上安装各种版本的python3 10.14.2 Beta (18C52a).
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.6.7.tar.xz...
-> https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz
Installing Python-3.6.7...
python-build: use readline from homebrew
BUILD FAILED (OS X 10.14.2 using python-build 20180424)
Inspect or clean up the working tree at /var/folders/db/pjnyydt54kl3_snfwpvlsxf40000gp/T/python-build.20181204115752.83999
Results logged to /var/folders/db/pjnyydt54kl3_snfwpvlsxf40000gp/T/python-build.20181204115752.83999.log
Last 10 log lines:
./Include/pytime.h:200:52: warning: declaration of 'struct tm' will not be visible outside of this function [-Wvisibility]
PyAPI_FUNC(int) _PyTime_localtime(time_t t, struct tm *tm);
^
./Include/pytime.h:204:49: warning: declaration of 'struct …Run Code Online (Sandbox Code Playgroud) 我刚安装了新的OSX Mojave,你知道它预装了PHP 7.1.19,只有几个扩展可用.
首先,我不是自制软件或任何其他软件包管理器的粉丝,也不是禁用安全工具,即csrutil.
我已经成功编译了intl扩展,但是由于代码签名问题,apache没有加载它:
PHP Startup: Unable to load dynamic library 'intl.so' - dlopen(intl.so, 0x0009): code signature in (intl.so) not valid for use in process: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed. in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
有没有办法签署新编译的扩展,可能使用ad-hoc签名方法或其他什么?
我知道有很多关于这个问题的其他主题但是所有这些都没有得到答复,或者至多建议使用自制软件来解决问题!
谢谢
将MacOS升级到10.14.2 Mojave后,我无法再安装任何带RVM的Ruby版本了.它总是会出现这样的错误:
$rvm install 2.5.3
ruby-2.5.3 - #removing src/ruby-2.5.3..
Searching for binary rubies, this might take some time.
No binary rubies available for: osx/10.14/x86_64/ruby-2.5.3.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for osx.
Certificates bundle '/usr/local/etc/openssl@1.1/cert.pem' is already up to date.
Requirements installation successful.
Installing Ruby from source to: /Users/jdinse/.rvm/rubies/ruby-2.5.3, this may take a while depending on your cpu(s)...
ruby-2.5.3 - #downloading ruby-2.5.3, this may take a while depending on …Run Code Online (Sandbox Code Playgroud) 我无法从命令行OpenCV程序访问iMac相机。(我正在CodeRunner而不是Xcode下编译和运行程序。)我已经读过Mojave NSCameraUsageDescription在Info.plist中需要的内容,并且我认为我已经将它正确地嵌入了二进制文件中。我在编译标志中添加了-sectcreate __TEXT __info_plist Info.plist(我在这里学到的),当我运行时otool -X -s __TEXT __info_plist videotest | xxd -r(从同一博客文章)它输出:
-?<?xml ve.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSCameraUsageDescription</key>
<string>Uses camera to see vision targets</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app requires to access your microphone in order to access the camera</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
(我添加了NSMicrophoneUsageDescription,以防它试图与相机一起打开麦克风。)
这是我运行程序时的输出:
OpenCV version 4.1.0-dev
[ INFO:0] global /Users/steve/Documents/GitHub/ssteve-opencv/modules/videoio/src/videoio_registry.cpp (185) VideoBackendRegistry VIDEOIO: Enabled backends(5, sorted by priority): FFMPEG(1000); GSTREAMER(990); AVFOUNDATION(980); CV_IMAGES(970); CV_MJPEG(960)
[ INFO:0] …Run Code Online (Sandbox Code Playgroud) macos-mojave ×10
macos ×4
python ×2
xcode ×2
apache ×1
appleevents ×1
c++ ×1
cocoa ×1
fonts ×1
fork ×1
hostname ×1
nsstatusitem ×1
objective-c ×1
opencv ×1
php ×1
popupmenu ×1
pyenv ×1
python-3.x ×1
ruby ×1
rvm ×1
safari ×1
security ×1