Encode screen

Decode screen

Source code at GitHub. For downloads, check the release folder.
NSTextField
and another for NSTextView
in conjunction with Interface Builder, rather than programatically.AppDelegate
and a ViewController
as usual.ViewController
as the delegate to respond to events. For that we need to declare that the ViewController
adopts the formal protocol defined by the delegates.@interface ViewController : NSViewController<NSTextViewDelegate, NSTextFieldDelegate> {3. Choose the
Main.storyboard
and choose the View Controller Scene
, drag and drop Text View
and Text Field
components.Text View
from the Document Outline
of the View Controller Scene
, option click, and in the popup, connect the delegate
outlet to the View Controller
. Same for Text Field
.ViewController.h
header, declare two IBOutlets
which will connect the components in the storyboard to the code.@interface ViewController : NSViewController<NSTextViewDelegate, NSTextFieldDelegate> {Since these interface builder outlets are not connected yet, the radio box is in unchecked state.
IBOutlet NSTextView *textView;
IBOutlet NSTextField *textField;
}
Text View
, option click, drag and connect the New Referencing Outlet
to View Controller
which brings the above IBOutlets
. Choose textView
to make the connection. Do the same for Text Field
, but here we should choose textField
as the referencing outlet.ViewController.m
implementation file and implement any of the delegated methods.#pragma mark - delegatesThe above methods are invoked when the text in a text view or text field changes. The same concept extends to Cocoa Touch and iOS development.
/* NSTextView */
- (void)textDidChange:(NSNotification *)notification {
NSLog(@"text did change");
textView = [notification object];
NSLog(@"string: %@", [textView string]);
}
/* NSTextField */
- (void)controlTextDidChange:(NSNotification *)obj {
NSLog(@"control text did changed");
textField = [obj object];
NSLog(@"text: %@", [textField stringValue]);
}
youtube-dl
can download separate audio and video streams and mux them together. Here are some commands to do that.# List all available streams for a videoOutputs
➜ youtube-dl -F "https://www.youtube.com/watch?v=abcd1234"
[youtube] abcd1234: Downloading webpageWe can see that the highest quality video is
[youtube] abcd1234: Downloading video info webpage
[youtube] abcd1234: Extracting video information
[youtube] abcd1234: Downloading js player en_US-vfl5-0t5t
[youtube] abcd1234: Downloading js player en_US-vfl5-0t5t
[info] Available formats for abcd1234:
format code extension resolution note
249 webm audio only DASH audio 56k , opus @ 50k, 1.52MiB
250 webm audio only DASH audio 84k , opus @ 70k, 2.10MiB
171 webm audio only DASH audio 126k , vorbis@128k, 3.36MiB
140 m4a audio only DASH audio 127k , m4a_dash container, mp4a.40.2@128k, 3.69MiB
251 webm audio only DASH audio 161k , opus @160k, 4.03MiB
278 webm 256x144 144p 101k , webm container, vp9, 13fps, video only, 2.41MiB
160 mp4 256x144 144p 112k , avc1.4d400c, 25fps, video only, 3.19MiB
242 webm 426x240 240p 140k , vp9, 25fps, video only, 2.34MiB
243 webm 640x360 360p 234k , vp9, 25fps, video only, 3.98MiB
133 mp4 426x240 240p 248k , avc1.4d4015, 25fps, video only, 7.13MiB
134 mp4 640x360 360p 254k , avc1.4d401e, 25fps, video only, 6.49MiB
244 webm 854x480 480p 355k , vp9, 25fps, video only, 6.22MiB
135 mp4 854x480 480p 559k , avc1.4d401e, 25fps, video only, 13.74MiB
247 webm 1280x720 720p 601k , vp9, 25fps, video only, 11.70MiB
136 mp4 1280x720 720p 1171k , avc1.4d401f, 25fps, video only, 28.41MiB
248 webm 1920x1080 1080p 1220k , vp9, 25fps, video only, 23.32MiB
137 mp4 1920x1080 1080p 2258k , avc1.640028, 25fps, video only, 57.07MiB
17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k
36 3gp 320x180 small , mp4v.20.3, mp4a.40.2
43 webm 640x360 medium , vp8.0, vorbis@128k
18 mp4 640x360 medium , avc1.42001E, mp4a.40.2@ 96k
22 mp4 1280x720 hd720 , avc1.64001F, mp4a.40.2@192k (best)
➜
137
with 1080p 2258k
and audio is 251
with 161k
. But these are video only and audio only streams. Let's combine them.➜ youtube-dl -f 137+251 "https://www.youtube.com/watch?v=abcd1234"It will pick a compatible format when merging. If
mp4
doesn't work it gets converted into mkv
mostly.-f bestvideo+bestaudio
--write-srt --sub-lang en
Install BlackBerry 10 Desktop Software.app
inside the BlackBerry 10 Desktop Software_1.2.0.58_B60.dmg
image for BlackBerry Link/Blend does not start the installer under macOS Sierra. Running the binary inside the installer .app
directly gives the following error:➜ ~ /Volumes/BlackBerry\ 10\ Desktop\ Software/Install\ BlackBerry\ 10\ Desktop\ Software.app/Contents/MacOS/Install\ BlackBerry\ 10\ Desktop\ Software ; exit;However under the Resources folder of the package content there is
/Library/LaunchAgents/com.rim.BBLaunchAgent.plist: Could not find specified service
/Library/LaunchDaemons/com.rim.BBDaemon.plist: Could not find specified service
BlackBerry Blend.pkg
installer. Running it brings up the installer window and the installation succeeds and everything works fine ever after.
0000000100000f60
. Before proceeding, enable "Show the HEX column" to easily see the hex of the instruction set, like in OllyDbg.-[AZAppController applicationDidFinishLaunching:]
the idx
of which is 88
. Alternatively you can directly go to the address of the proc at 000000010000a250
. Choose the pseudo code mode from the toolbar to get an idea of what is happening.AZRegistrationWindowController
and calls the validateExistingRegistrationInformation
method whose return value is in rax
register. Then it takes the lower bytes of the ax
register and performs a bitwise and
(the test
instruction). If the result is 0
, means al
is 0
, then the zero flag (ZF
) is set. If zero flag is not set, then do a local jump to the address at loc_10000a6ac
which is at 000000010000a6ac
. What we need to do is to take that branch which will then skip loading the AZRegistrationWindowController
window. To do that we need to change the jne
instruction to je
. So the easy way is to click on the jne
line and click the hex mode, which will highlight the instruction. The hex for jne
/jnz
instruction is 85
and hex for je
/jz
is 84
. So double click 85
in instruction 0F 85 FC 02 00 00
and replace it with 84
. Go back to asm mode and you can see the updated instruction. Only that it is shown in bytes (db
).