Welcome to Instapy’s documentation!¶
Automating the Browser¶
Oddly is proving to be quite difficult.
The methods of a selenium.Firefox()
object¶
pprint.pprint(dir(browser))
['CONTEXT_CHROME',
'CONTEXT_CONTENT',
'NATIVE_EVENTS_ALLOWED',
'__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__enter__',
'__eq__',
'__exit__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'_file_detector',
'_is_remote',
'_mobile',
'_switch_to',
'_unwrap_value',
'_web_element_cls',
'_wrap_value',
'add_cookie',
'application_cache',
'back',
'binary',
'capabilities',
'close',
'command_executor',
'context',
'create_web_element',
'current_url',
'current_window_handle',
'delete_all_cookies',
'delete_cookie',
'desired_capabilities',
'error_handler',
'execute',
'execute_async_script',
'execute_script',
'file_detector',
'file_detector_context',
'find_element',
'find_element_by_class_name',
'find_element_by_css_selector',
'find_element_by_id',
'find_element_by_link_text',
'find_element_by_name',
'find_element_by_partial_link_text',
'find_element_by_tag_name',
'find_element_by_xpath',
'find_elements',
'find_elements_by_class_name',
'find_elements_by_css_selector',
'find_elements_by_id',
'find_elements_by_link_text',
'find_elements_by_name',
'find_elements_by_partial_link_text',
'find_elements_by_tag_name',
'find_elements_by_xpath',
'firefox_profile',
'forward',
'fullscreen_window',
'get',
'get_cookie',
'get_cookies',
'get_log',
'get_screenshot_as_base64',
'get_screenshot_as_file',
'get_screenshot_as_png',
'get_window_position',
'get_window_rect',
'get_window_size',
'implicitly_wait',
'install_addon',
'log_types',
'minimize_window',
'mobile',
'name',
'orientation',
'page_source',
'profile',
'quit',
'refresh',
'save_screenshot',
'service',
'session_id',
'set_context',
'set_page_load_timeout',
'set_script_timeout',
'set_window_position',
'set_window_rect',
'set_window_size',
'start_client',
'start_session',
'stop_client',
'switch_to',
'switch_to_active_element',
'switch_to_alert',
'switch_to_default_content',
'switch_to_frame',
'switch_to_window',
'title',
'uninstall_addon',
'w3c',
'window_handles']
So by count that’s like 130 methods. vars(browser)
didn’t give me a ton
so apparently the magic is in the methods.
API¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #!/usr/bin/env python
"""Script that functionally uses the basic API for InstaPy."""
from instapy_00 import username, password
from instapy import InstaPy
def start_session():
session = InstaPy(username="Chugthai", password="pyQV7GcQVjBsU93mFy48")
session.login()
session.like_by_tags(["bmw", "mercedes"], amount=5)
session.set_dont_like(["naked", "nsfw"])
# Next, you can tell the bot to not only like the posts but also to follow some
# of the authors of those posts. You can do that with set_do_follow():
session.set_do_follow(True, percentage=50)
# You can also leave some comments on the posts. There are two things that you
# need to do. First, enable commenting with set_do_comment():
session.set_do_comment(True, percentage=50)
# now let's set what comments to leave with this
# session.set_comments() # type: List
session.set_comments(["Nice!", "Sweet!", "Beautiful :heart_eyes:"])
session.end()
if __name__ == "__main__":
start_session()
|
Additional Features in InstaPy¶
InstaPy is a sizable project that has a lot of thoroughly documented features. The good news is that if you’re feeling comfortable with the features you used above, then the rest should feel pretty similar. This section will outline some of the more useful features of InstaPy.
Headless Browser¶
This feature allows you to run your bot without the GUI of the browser. This is super useful if you want to deploy your bot to a server where you may not have or need the graphical interface. It’s also less CPU intensive, so it improves performance.  The service will quickly notice that you’re running a bot and will ban some of its actions. That’s why it’s a good idea to set quotas on some of your bot’s actions.
Using AI to Analyze Posts¶
Earlier you saw how to ignore posts that contain inappropriate words in their descriptions. What if the description is good but the image itself is inappropriate? You can integrate your InstaPy bot with ClarifAI, which offers image and video recognition services: Now your bot won’t like or comment on any image that ClarifAI considers NSFW. You get 5,000 free API-calls per month.
Relationship Bounds¶
It’s often a waste of time to interact with posts by people who have a lot of followers. In such cases, it’s a good idea to set some relationship bounds so that your bot doesn’t waste your precious computing resources: With this, your bot won’t interact with posts by users who have more than 8,500 followers.
- InstaPy Docs
- Table of Contents
- Settings
- Liking
- Commenting
- Emoji Support
- Following
- Smart Hashtags
- Smart Location Hashtags
- Quota Supervisor
- Restricting Likes
- Ignoring Restrictions
- Ignoring Users
- Excluding friends
- Mandatory Words
- Mandatory Language
- Don’t unfollow active users
- Blacklist Campaign
- Simulation
- Skipping user for private account, no profile picture, business account, bio keywords
- Liking based on the number of existing likes a post has
- Commenting based on the number of existing comments a post has
- Commenting based on mandatory words in the description or first comment
- Interactions based on the number of followers and/or following a user has
- Interactions based on the number of posts a user has
- Custom action delays
- Target Lists
- Actions
- Like by Tags
- Like by Feeds
- Like by Locations
- Comment by Locations
- Follow by Tags
- Follow by Locations
- Following by a list
- Follow someone else’s followers
- Follow users that someone else is following
- Follow and interact someone else’s followers/following
- Follow the likers of photos of users
- Follow the commenters of photos of users
- Unfollowing
- Interact on posts at given URLs
- Interact with specific users
- Interact with specific users’ tagged posts
- Interact with someone else’s followers
- Interact with users that someone else is following
- Interact by Comments
- Accept pending follow requests
- Remove outgoing follow requests
- InstaPy Pods
- Instapy Stories
- Third Party Features
- Instance Settings
- Relationship tools
- Automate InstaPy
- Additional Information
- Workspace folders
- Extensions
- Twitter API


Bond lengths (Å) and angles (°) for [ML14·H
2O] molecules.
Bond Type
CuL14·H
2O
MnL14·H
2O
FeL14·H
2O
NiL14·H
2O
1
D M–O(CO)
2.0
1.9
1.9
1.9
2.0
2.0
2.0
2.1
D M–O(CN)
2.1
1.9
2.1
2.1
D M–OW
2.2
2.0
2.1
2.0
D M–N
2.2
2.1
2.0
2.0
2.1
2.2
2.1
2.2
<O(CO)–M–O(CO)
92.7
90.5
91.7
92.5
<O(CO)–M–O(CN)
173.2
92.9
174.7
94.5
174.2
94.1
1709
95.1
<O(CO)–M–O
W
101.5
98.5
90.1
94.0
84.3
96.3
93.1
98.1
<O(CO)–M–N
98.2
83.9
81.4
166.5
92.1
84.2
85.5
172.7
97.1
82.1
82.7
165.9
93.9
81.4
80.5
164.3
<N–M–O(CN)
78.7
89.8
86.6
90.6
82.6
92.1
82.5
90.0
<N–M–O
W
160.3
95.0
177.7
91.2
178.2
95.7
172.9
96.8
<N–M–N
86.1
89.6
85.5
85.4
Oxygens from a carboxylic group are represented as –O(CO); oxygens from an amide group are represented as –O(CN), and oxygens from water are represented as OW.
1 Reference [
7].


| Planned Work Notification: 111111111 - Reminder |
This is just a quick reminder that we will be performing a planned work in Morristown, NJ between 2021-08-13 18:00:00 - 2021-08-13 23:00:00 GMT. Please see details of the work and impact on your service below.
Details:| Start | 2021-08-13 18:00:00 GMT |
| End | 2021-08-13 23:00:00 GMT |
| Location | USA |
Planned work Reason:
Emergency fiber repair works by partner to avoid unplanned outage
| Services Affected | SLID/CCSD | Customer PON | Service Type | Expected Impact to your Service | Site Address |
|---|---|---|---|---|---|
| HI/Wavelength/00000000 |<PHONE_NUMBER>555 | PO # CID000000001 | Wavelength | 300 Mins | USA |
| HI/Wavelength/00000000 |<PHONE_NUMBER>666 | PO # CID000000001 | Wavelength | 300 Mins | USA |
If you have any questions regarding the planned work, please login to MyPortal or contact our Change Management Team using the email below.


Git, Github, and Version Control
More confusing than an IZZI puzzle
Friday, April 10, 2015
Version Control
Version control is a difficult subject to define clearly, since it is a concept that includes multiple facets. So, lets just name them and then talk about them.
- Version control tracks the state of files as they change over time. A "commit" saves all of the changes to the file.
- Version control allows a developer to "branch" a copy of the folder to work on without changing the state of the master branch.
- Version control allows a team of developers to collaborate by pushing/pulling/merging branches with logic to resolve conficts(two changes to the same document).
The first aspect is the easiest to understand from a layman's perspective. Most people are used to being able to save a word document, and if they make a huge mistake, being able to revert to previous versions to undo that mistake. Similarly, most computer users (I am hoping) use some sort of backup software (Timemachine for Mac users). All of the files in the computer are saved as a copy, and you can see them in relation to the time that they were backed up. Version control lets you do something very similar for a folder(and all the files in it) that repersents all of the code for a program.
The second aspect gets a little bit more confusing, but version control includes the concept of "branching", which is git-speak for taking all of the code from the master copy and creating a editable sandbox copy that does not change the state of the master copy. To make this clear, you could create a branch for the folder that represents this blog, call it happy-code and replace all of the files with an image of a smiling emogi cat and it would not change this file at all. Assuming that the work I did on happy-code was actually benificial, like implementing a new feature, then the branch gets merged into the master and does change the the folder that gets published.
Branching is also what allows multiple developers to work on the same project without constantly conflicting with eachothers work. The branch that developer A is working on doesn't affect the master branch, which means that the branch that developer B is working on is a clean copy that works. When developer A finishes her branch, developer A can check it before merging it with the master branch and vice-versa.
Git
Git is a command line version control program. Using a robust array of commands, a developer uses git to branch, add/commit changes, move between commits(forwad and backward) and perform all of the functions described above. It is version control for your local machine.
Github
Github, by contrast, is version control for the cloud (ish). Github is like dropbox, but for git files and the folders that they are storing. It provides a suit of tools for a team of developers to review/merge eachothers branches through pull requests, and visual tools. It is important to note that Github is not/did not produce git. Git came first, it was a powerful tool before github, but Github made it much easier for teams of developers to collaborate using git.


I think it's very inspiring. This way of learning is very new to me and I feel very encouraged and excited for all the possibilities that this experience will have for me.
It will be quite challenging especially where I'm used to the traditional way of learning. However, learning as an adult with this method I think it will be very effective.
I'm not sure. I'm a bit of an introvert but I believe having positive relationships with people around you is crucial. I'm glad to hear about the headphone policy. It's a great reminder by Sheereef that this is not a solo learning culture but a strong involvement of team work.
Not really. In fact, some great points were discussed in the video which I think I will use as a reminder when things get difficult during the learning process. For example, exposing your ignorance isn't the worst thing and it's good to tell yourself that "you don't know". Keep asking question how much I would get out of the experience will be valueable to push myself to the limit.
I'm excited but also nervous at the same time. I always wanted to learn how to learn. In the video someone asked about how can you be creative when you're a beginner. I had the same worries about not being creative and the answer Shereef gave was quite encourangin that creativity will come as your skills grow.


Description
Introduction
Fortran code that implements parallel programming.
Simple Program to Demonstrate Parallel Programming using Coarrays
This is a simple "Hello World" type program that can be used to test out multiprocessor execution. It creates a scalar variable that exists in every image. It then reads in an integer from the user and assigns the read in integer into every corresponding scalar variable in every image. After letting each image synchronize, it prints out the read in variable and the image number.
Program Run - Simple "Hello World" Type Fortran Program using Coarrays
As can be seen from the program compilation and exectution above, there are a number of differences in the process when compared to standard compilation and execution. The program is compiled with a coarray aware compiler "caf". It is run with a coarray aware loader named "cafrun." One of the options to cafrun is the number of "images" to be created when running the program. This program was executed on a quad-core processor, but the number of images is 8. Each image is provided with the integer the user entered, which in this case is 10. The program then executes each image with the user entered integer and provides an output. It is interesting that the number of images does not have to equal the number of cores or processors.


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @(params: Map[String, Any]) @uk.gov.hmrc.hmrcemailrenderer.templates.helpers.html.template_main(params, "You’ve changed your email address") { @uk.gov.hmrc.hmrcemailrenderer.templates.helpers.html.salutation(params)
You’ve changed your email address for electronic communications.
Now you need to verify your new email address. We’ve sent you an email separately to tell you how to do this.
Until you verify your new email address, your electronic communications will get sent here.
From HMRC Digital
}


BingMyShow
Home
(current)
Movies
Categories
Action
Animation
Comedy
Sci-Fi
Horror
Romance
Fantasy
Family
History
Documentary
Mystery
Music
Shows
Categories
Action
Animation
Comedy
Sci-Fi
Horror
Romance
Fantasy
Family
History
Documentary
Mystery
Music
WatchList+
Username :
Password :
Email :
Username :
Password :
Login
Sign Up


--- layout: post title: Jaggregate and Java 7 closures published: 1 category: - Programming ---
The recent draft proposal to add special syntax for local and anonymous functions in Java 7 has gotten me really excited. If this stuff becomes part of the core language, my Jaggregate library will leap to support these typed functions in lieu of or alongside Jaggregate's current unary and binary functors/predicates. So instead of having to write something like:
Set<Integer> singleDigits = Interval.fromTo( 0, 9 ).toSet();
singleDigits.select( new UnaryPredicate<Integer>() {
public boolean matches( Integer target ) {
return target % 2 == 0;
}
} ).forEachDo( new UnaryFunction<Object>() {
public Object evaluate( Object target ) {
System.out.println( target );
return this;
}
} );
you could write:
Set<Integer> singleDigits = Interval.fromTo( 0, 9 ).toSet();
singleDigits.select( (int target) : target % 2 == 0 )
.forEachDo( (Object target) : { System.out.println( target ); return this; } );
Sweet, eh?


OpenSolaris
Collectives
Discussions
Documentation
Download
Source Browser
Free CD
Log-in
|
en
Project jeos
:
2009 06 JeOS Prototype VM Image
Top Menu
Show
:
Comments
Attachments
History
Information
Print
:
Print
Print preview
Export as PDF
Export as RTF
Export as HTML
Export as XAR
Wiki code for
2009 06 JeOS Prototype VM Image
Hide Line numbers
1: = OpenSolaris 2009.06 JeOS Prototype VM Image = 2: 3: The OpenSolaris JeOS - [[Just enough Operating System>>http://en.wikipedia.org/wiki/Just_enough_operating_system_(JeOS)]] (pronounced "juice") - virtual machine (VM) image **prototype** is a reduced footprint, pre-installed form of the OpenSolaris 2009.06 distribution available for a variety of virtualization platforms. This VM image delivery form complements the existing, desktop-oriented [[Live Media>>http://www.opensolaris.com/get/index.jsp]] form of OpenSolaris by providing a text-oriented, headless server installation. The [[OpenSolaris JeOS Project>>https://markebrooks.github.io/bin/view/Project+jeos/]] is responsible for delivering this image. 4: 5: {{velocity}} 6: {{html}} 7: #info("Since the reduced set of pre-installed packages is not yet qualified as an official starting point in testing of the Sun-managed OpenSolaris distribution, this image is positioned as a **prototype**. A future version of the image may be considered an officially supported starting point once the installed package set is considered to be a supported combination and building and testing of the image are integrated into the Sun-managed OpenSolaris release process.") 8: {{/html}} 9: {{/velocity}} 10: 11: The image is primarily geared toward server side application developers who need a lightweight installation of the advanced OpenSolaris operating system as a starting point to build their own application-specific images. Since it’s a proper subset of the OpenSolaris distribution delivered by Sun Microsystems, it’s easy for developers to build their own custom images by adding and removing packages using the pkg(1) command line interface. 12: 13: The image is also useful for developers and administrators wanting to easily experience a headless server form of OpenSolaris running on a variety of virtualization platforms. 14: 15: {{toc start=2 depth=2 numbered=false scope=page /}} 16: 17: == Downloads == 18: 19: Use subject to [[License Terms>>#HLicenseTerms]] 20: {{velocity}} 21: {{html}} 22: #info("See the platforms.txt file in the downloaded archive for virtualization platform-specific deployment instructions.") 23: {{/html}} 24: {{/velocity}} 25: 26: |=Platform |=Format|=JeOS Download|=Loading the Image 27: |**VirtualBox** [[Get it!>>http://www.sun.com/software/products/virtualbox/get.jsp]]|OVF|[[zip (261 MB)>>http://dlc.sun.com/osol/jeos/2009/osol-0906-jeos-proto-vbox-ovf.zip]]|VirtualBox 2.2.4 or later is required. 28: \\Select "File -> Import Appliance..." 29: \\If you’re using a laptop, ensure that the Network Adapter name is associated with an active network interface on your host system. For example, by default, the VM might not be associated with your laptop’s wireless adapter and therefore may not acquire an IP address. 30: |**VirtualBox** [[Get it!>>http://www.sun.com/software/products/virtualbox/get.jsp]]|VDI|[[zip (272 MB)>>http://dlc.sun.com/osol/jeos/2009/osol-0906-jeos-proto-vbox-vdi.zip]] 31: 32: [[7z (142 MB)>>http://dlc.sun.com/osol/jeos/2009/osol-0906-jeos-proto-vbox-vdi.7z]]|VirtualBox 2.2.4 or later is recommended for 64-bit support. If using 32-bit, VirtualBox 1.6.8 or later should work properly. 33: 34: Select "Machine \-> New..." 35: "Name" = "OpenSolaris 2009.06 JeOS Prototype" 36: "Operating System" = "Solaris" 37: "Version" = "OpenSolaris (64 bit)" or "OpenSolaris" (32-bit) 38: "Memory" = at least 512 MB 39: Select "Use existing hard disk", click folder icon, select "Add" and select the .vdi file from your download. 40: \\Once the machine has been created, click on "Network" and change the "Attached to" to "Bridged Adapter" if you want the machine to obtain an IP address on your host network. 41: |**VMware: Player, Workstation, Fusion, Server and ESX**| VMDK |[[zip (236 MB)>>http://dlc.sun.com/osol/jeos/2009/osol-0906-jeos-proto-vmware.zip]] 42: 43: [[7z (139 MB)>>http://dlc.sun.com/osol/jeos/2009/osol-0906-jeos-proto-vmware.7z]]|It is recommended that you use the latest available updates to recent versions of the VMware products to avoid a [[system time of day issue>>http://defect.opensolaris.org/bz/show_bug.cgi?id=4788]]. 44: 45: Open the VMX filed through "File -> Open..." 46: |**Xen: Oracle VM, OpenSolaris xVM, etc.**| |[[PVM 7z (222 MB)>>http://dlc.sun.com/osol/jeos/2009/osol-0906-jeos-proto-xvm-zen-para.7z]] 47: 48: [[HVM 7z (190 MB)>>http://dlc.sun.com/osol/jeos/2009/osol-0906-jeos-proto-xvm-zen-hvm.7z]]|Refer to the [[OpenSolaris xVM documentation>>http://opensolaris.org/os/community/xen/docs/]] 49: |**Hyper-V and Virtual PC**|VHD|[[7z (145 MB)>>http://dlc.sun.com/osol/jeos/2009/osol-0906-jeos-proto-hyperv.7z]]| 50: 51: == Initial Configuration 52: 53: === Initial Login === 54: 55: |=Username|=Password 56: |osol|justone1 57: 58: are the login credentials for a predefined user that has administrator privileges. 59: 60: Once you’ve logged in, consider changing the initial passwords: 61: 62: {{{ 63: $ passwd osol 64: $ pfexec passwd root 65: }}} 66: 67: === Initial Network Configuration 68: 69: * **Bridged Networking and DHCP by Default:** Since the VM template is configured to use bridged networking and DHCP by default, the VM template will attempt to obtain an IP address on your host’s network and it will display the IP address on the console during start up. 70: 71: * **Switching to Static IP Address:** Refer to the [[Automated Installer documentation>>http://dlc.sun.com/osol/docs/content/2009.06/AIinstall/faq.html#switch]]. 72: 73: * **Using NAT:** If you prefer to use NAT in VirtualBox and you expect to access your VM from your host’s network, see the VirtualBox documentation for additional set up information. 74: 75: == Next Steps == 76: 77: === Add your own user account === 78: 79: Add the user: 80: 81: {{{$ pfexec useradd -b /export/home -m -s /usr/bin/bash <user>}}} 82: 83: Assign a password: 84: 85: {{{$ pfexec passwd <user>}}} 86: 87: Provide it with "root" privileges: 88: 89: {{{$ pfexec usermod -P’Primary Administrator’ <user>}}} 90: 91: === Restart and Shut Down === 92: 93: Shut down: 94: 95: {{{$ pfexec shutdown -i0 -g0 -y}}} 96: 97: Restart: 98: 99: {{{$ pfexec init 6}}} 100: 101: === Access the VM via SSH === 102: 103: You have several options to enable SSH access to the JeOS VM image. If you intend to use the JeOS image as means to get familiar with a reduced installation of OpenSolaris, you should consider resetting the SSH configuration. However, if you are intending to use the JeOS image as part of appliance build automation process, you may find that reusing the initial SSH configuration makes your life easier. 104: 105: In either case, consider configuring your OS to [[use a static IP address>>http://dlc.sun.com/osol/docs/content/2009.06/AIinstall/faq.html#switch]]. 106: 107: ==== Appliance Builders: Reusing the Built-in SSH Configuration ==== 108: 109: 110: The JeOS VM image is pre-configured to mount a disk named "instance" during start-up to access initially the configured keys. 111: 112: 1. In the expanded download archive, look for the file named {{{sshvmkeys.virtdisks.zip}}} and expand it. Look for the {{{instance}}} VM image for your virtualization platform. 113: 1. In your VM configuration, define and attach the {{{instance}}} image. 114: 1. Start your image and note the IP address. (A script with access to the serial console can scrape the screen for the IP address). 115: 1. From a script or your client terminal, log into the VM instance using the private key in the file {{{sshvmkeydsa.key}}}: 116: 117: {{{$ssh -2 -i ./sshvmkeydsa.key osol@ip-of-guest}}} 118: 119: ==== Casual Users: Resetting the SSH Configuration ==== 120: 121: 122: If you intend to use the OS directly, you can disable the {{{vm-instance}}} service that attempts to load SSH keys from a specially named zpool named "instance": 123: 124: {{{$ pfexec svcadm disable vm-instance}}} 125: 126: If you want to remove the {{{vm-instance}}} service: 127: 128: {{{ 129: $ pfexec svccfg delete vm-instance 130: $ cd /lib/svc/method$ pfexec rm vm-instance 131: $ cd /var/svc/manifest/site$ pfexec rm vm-instance.xml 132: }}} 133: 134: Clean up boot parameters only needed by the vm-instance service by editing {{{/rpool/boot/grub/menu.lst}}} to remove ~{~{sshd=enable}} and ~{~{sshd=disable}} boot options that are read by {{{/lib/svc/method/vm-instance}}}. 135: 136: Lastly, if you want to use password-based SSH authentication, modify {{{/etc/ssh/sshd_config}}} by setting: 137: 138: {{{PasswordAuthentication yes}}} 139: 140: And restarting SSH: 141: 142: {{{$ pfexec svcadm restart ssh}}} 143: 144: === Review OpenSolaris Next Steps After Installation Documentation === 145: 146: Review [[Next Steps After Installation>>http://wikis.sun.com/display/OpenSolarisInfo200906/Next+Steps+After+Installation]] in the OpenSolaris documentation. 147: 148: See the [[OpenSolaris Information Center>>http://dlc.sun.com/osol/docs/content/2009.06/]] for an introduction to OpenSolaris. 149: 150: === Install Guest Additions === 151: 152: Refer to the virtualization platform documentation for installation instructions. Performance of the VM and the ability to support shared folders may be enhanced through the installation of guest additions. 153: 154: Since the Removable Media Manager depends on Gnome GUI libraries that are not installed in the JeOS image, a script is provided to simplify mounting of ISO images such as those used to deliver VirtualBox Guest Additions: 155: 156: {{{$ pfexec /sbin/mountisos}}} 157: 158: === Customize Boot Process === 159: 160: If you plan to use the JeOS image directly as a reduced installation of OpenSolaris, you might want to simplify the GRUB configuration and remove the JeOS image-specific startup and login messages. 161: 162: Remove "Press any key to continue" screen: 163: 164: {{{$ pfexec vi /rpool/boot/grub/menu.lst}}} 165: 166: to comment out the first two lines as indicated in the file. 167: 168: Pare back boot menu items: 169: 170: {{{$ pfexec vi /rpool/boot/grub/menu.lst}}} 171: 172: to comment out those boot entries that you don’t need. 173: 174: Reduce boot timeout value: 175: 176: {{{$ pfexec bootadm set-menu timeout=5}}} 177: 178: to set the boot time out to 5 seconds. 179: 180: === Customize Console and Login Messages === 181: 182: Customize the system startup and login messages as you see fit: 183: 184: {{{$ pfexec vi /etc/issue}}} 185: 186: {{{$ pfexec vi /etc/motd}}} 187: 188: === Change Hostname === 189: 190: See [[How To>>http://wiki.genunix.org/wiki/index.php/Change_hostname_HOWTO]]. 191: 192: === Experiment With VM Snapshots === 193: 194: Consider using your virtualization platform’s snapshot capability to preserve the initial state of your VM and subsequent interesting checkpoints of your VM’s configuration. 195: 196: **VirtualBox and Snapshots:** 197: 198: Shut down and power off your OS instance: 199: 200: {{{$ pfexec shutdown -i0 -g0 -y}}} 201: 202: In VirtualBox, click on {{{Snapshots}}} and the camera icon. 203: 204: === Consider Upgrading to the Development Build === 205: 206: If you’d like to upgrade your OS installation to the latest generally available development quality build: 207: 208: {{{ 209: $ pfexec pkg set-publisher -O http://pkg.opensolaris.org/dev opensolaris.org 210: $ pfexec pkg install SUNWipkg 211: $ pfexec pkg image-update 212: }}} 213: 214: Since you may see errors during the upgrade procedure, you should consult the latest upgrade notes prior to upgrading. For example, the [[OpenSolaris Build 125 Upgrade Notes>>http://mail.opensolaris.org/pipermail/opensolaris-announce/2009-October/001294.html]] describe some possible errors. 215: 216: == What’s New? == 217: 218: This is the second version of our JeOS prototype of the Sun-managed OpenSolaris distribution. Changes since the 2008.11 version include: 219: 220: === Auto Installer-based Install Scripts Published === 221: 222: The scripts and files used to generate the base JeOS installation have been published for your reference. See the [[project source repository>>http://src.opensolaris.org/source/xref/jeos/va-live-media/jeos/]] for AI manifests, related install files and supplemental scripts implementing some of the features listed below. 223: 224: === VM Image Assembly Automation Support === 225: 226: ==== SSH With Key-based Authentication ==== 227: 228: When the JeOS image is used as the basis of an application-specific VM template or appliance, scripted and automated assembly tools and scripts can benefit from having key-based SSH access to a running VM instance such that they can customize the OS instance. By default, SSH is enabled during startup and access via SSH is limited to public/private key pairs. 229: 230: To allow automatic loading of a set of predefined authorized keys, you must attach additional virtual disk with zpool named ’instance’ to your VM. This zpool will be read automatically on system boot by the SMF service ’vm-instance’. 231: 232: A sample of a zpool ’instance’ along with instructions is included in the JeOS download archive. This example will help you understand how you can start the JeOS image with SSH daemon disabled so you can safely regenerate yours new SSH keys and edit default instance data. 233: 234: For x86-based systems, you can use GRUB menu to start the system with sshd either enabled (default) or disabled: 235: 236: {{{ 237: [OpenSolaris 2009.06 x86 JeOS Prototype (Auto 32 or 64 bit) -SSH] 238: [OpenSolaris 2009.06 x86 JeOS Prototype (Auto 32 or 64 bit) -SSH] 239: }}} 240: 241: For SPARC-based systems, use the following boot procedures: 242: 243: {{{ 244: ’ok boot disk - sshd=enable’ 245: ’ok boot disk - sshd=disable’ 246: }}} 247: 248: ==== x86 Serial Access in GRUB Menu ==== 249: 250: On x86 platforms, your VM image assembly scripts can control the GRUB boot selection and SSH login via serial port access. This feature has been demonstrated with the VirtualBox Headless Mode serial access, but it can also be useful for full login automation on other virtualization platforms. On boot you will see on the console: 251: 252: {{{"Press any key to continue"}}} 253: 254: At this stage, your assembly script can issue a "press key" on the serial console and select one of the \+SERIAL GRUB boot options to enable further serial access for login from your script. 255: 256: {{{ 257: [OpenSolaris 2009.06 x86 JeOS Prototype (AutoArch) +SERIAL +SSH] 258: [OpenSolaris 2009.06 x86 JeOS Prototype (AutoArch) +SERIAL -SSH] 259: }}} 260: 261: === Hardened Installation === 262: 263: The process by which the JeOS image is built now follows certain recommendations from the [[Center for Internet Security (CIS)>>http://www.cisecurity.org/]]. The JeOS image build process uses the portion of the [[Immutable Service Containers (ISC)>>http://kenai.com/projects/isc/pages/Home]] project’s tools applicable to a global zone to implement some of the recommendations outlined in the document [[OpenSolaris Security Hardening>>http://wikis.sun.com/display/ISC/OpenSolaris+Security+Hardening]]. 264: 265: === Additional Boot Options === 266: 267: Several boot options are included to address requirements or constraints of several virtualization platforms: 268: 269: ==== Disable IDE DMA ==== 270: 271: IDE DMA is not needed on slower hosts when IDE disk is used in platforms such as Qemu and Parallels. 272: 273: {{{[OpenSolaris 2009.06 x86 JeOS Prototype (AutoArch) -IDE DMA +SSH]}}} 274: 275: ==== Force 32-bit Boot ==== 276: 277: Under some circumstances you may need to run OpenSolaris in 32-bit mode on 64-bit hosts. 278: 279: {{{[OpenSolaris 2009.06 x86 JeOS Prototype (Force 32 bit Boot) +SSH]}}} 280: 281: === NWAM Notification Script === 282: 283: When the Network Auto Magic facility obtains an IP address from DHCP, the IP address, SSH key and sshd daemon status are displayed on the console. The IP address is also recorded in the file ~{~{/.nwamhasip}}. This information can help with detection if network is already set up on the booted JeOS instance. 284: 285: {{{IP: <IP_ADDRESS>, Got SSH key OK, sshd online}}} 286: 287: === Convenience Script to Mount ISO Images === 288: 289: Since the Removable Media Manager depends on Gnome GUI libraries that are not installed in the JeOS image, a script is provided to simplify mounting of ISO images: 290: 291: {{{$ pfexec /sbin/mountisos}}} 292: 293: === Changes in Pre-installed Packages === 294: 295: * Removed relatively large ’vim’ package and added much smaller ’nano’ package. If and when the vim package is significantly reduced in size in the future, then it might make sense to pre-install it. 296: * Additional Python-related packages are pre-installed to support new dependencies of the pkg(5) system. 297: * GNU info pages component was removed. Existing GNU man pages are sufficient to address pre-installed components. 298: * The Java Runtime Environment (JRE) and Ruby packages are no longer pre-installed. These components had been included in the 2008.11 JeOS iteration to help support use of the image in the Amazon EC2 environment. Since a post install customization step is already needed to prep the JeOS image for EC2, these packages can be easily installed from the OpenSolaris package repository. 299: 300: == Provide Feedback and Participate == 301: 302: Share your feedback on the image by sending a message to: 303: 304: {{{jeos-discuss AT opensolaris.org}}} 305: 306: [[Archives and mailing list sign-up forms>>http://mail.opensolaris.org/mailman/listinfo/jeos-discuss]] are also available. 307: 308: You can find out more information about the OpenSolaris JeOS project at the [[project web site>>http://opensolaris.org/os/project/jeos/]]. 309: 310: == License Terms == 311: 312: |**License Terms**\\The contents of the OpenSolaris™ 2009.06 JeOS images are governed by the [[Common Development and Distribution License Version 1.0>>http://www.opensolaris.com/licensing/opensolaris_license/]], with the exception of certain portions under other licenses (such as the [[OpenSolaris Binary License>>http://www.opensolaris.com/licensing/opensolaris_binary_license/]]) as provided in the [[OpenSolaris JeOS License>>200906 License]] file included with the software. The additional software available from the [[OpenSolaris Package Repository>>http://pkg.opensolaris.org]] and not included on the JeOS image is governed by the licenses provided in the [[OpenSolaris Package Repository License>>http://pkg.opensolaris.org/license/]] file and/or in the individual software packages. \\All of these licenses permit use, copying and redistribution of the software.|
Search
Collectives
Community Group
Academic and Research
Accessibility
Advocacy
Appliances
Approachability
Architecture Process and Tools
BrandZ
Chinese Users
Community Advisory Board
Databases
Desktop
Device Drivers
Distribution
Documentation
DTrace
Emerging Platforms
Fault Management
Games on OpenSolaris
HA Clusters
HPC Developer
Installation and Packaging
Internationalization and Localization
Laptop
Logical Domains
Modular Debugger (MDB)
Networking
NFS
Observability
OpenSolaris Governing Board (OGB)
OpenSolaris Printing
OS/Net (ON)
Performance
Power Management
PowerPC
Security
Service Management Facility (smf(5))
Software Porters
Solaris Volume Manager
Storage
Systems Administration Community Group
Testing
Tools Home
Unix File Systems (UFS)
Website Community
X Window System
Xen
ZFS
Zones
Project
ADSL Modem Enhancement
ARC Process Definition
ARM Platform Port
Automatic Data Migration
BIND Update
Bluetooth Stack & Drivers
Brocade FC HBA - Initiator
Brocade FC HBA - Target
Brussels - unified network link configuration
Caiman, Solaris Install Revisited
Celeste
Český portál
Chime Visualization Tool for DTrace
CIFS client for Solaris
CIFS Server
Clearview: Network Interface Coherence
Cluster Agent: Informix Dynamic Server
Cluster Agent: OpenSolaris Container
Cluster Agent: OpenSolaris xVM
Cluster Agent: Oracle E-Business Suite
Cluster agent: PostgreSQL
Cluster Agent: Samba
Cluster Agent: Tomcat
CMT
Coarse Data Flow Parallelism
Colorado: Open HA Cluster on OpenSolaris
Command Assistant
Common Array Manager
Companion - /opt/sfw: Free and Open Source software
COMSTAR: Common Multiprotocol SCSI Target
Content
Contest
CPU Observability
Credentials Process Groups
Crossbow: Network Virtualization and Resource Control
Crypto KMS Agent Toolkit
Cryptographic Framework
Data Migration Manager
Data Tethers
Deutsches Portal
Device Detection Tool
Device Driver Utility
Device Manager
Device Mapper
Direct Rendering Infrastructure & 3D drivers
DTrace Guide
Duckwater: Simplified name services management
Easy Tools
Emancipation
Emulex Fibre Channel Device Driver
Emulex Advanced Ethernet Device Driver
Enable/Enhance Solaris support for Intel Platform
Enhance the support of USB webcams
Enhanced SMF Profiles
Enhancements for AMD-based Platforms
Erlang DTrace Integration
Ethernet bridge module for Solaris
Evaluate Conary
Events Registry
Ext3 file system support
F/OSS Package Base
Facilitation
Fibre Channel over Ethernet
Fine Grained Access Policy (FGAP)
Fingerprint Authentication
Flexible Mandatory Access Control
Forensic Tools
Fully Open X Project
Fuse on Solaris
gcore
Generic Machine Check Architecture Improvements
Google SOC
HA-JBoss
HA-MySQL
Hadoop Live CD
Hitachi
HoneyComb Fixed Content Storage
HPC Stack
Image Packaging System
Improved Performance MIB
Indiana
Innovation Awards
Input Method
Intel Graphics
Internet Key Exchange, version 2
Interrupt Resource Management
IP Datapath Refactoring
IP over Infiniband
IPsec Tunnel Reform
iSCSI Extensions for Remote DMA (iSER)
iSNS Server
JeOS - Just enough Operating System
JKstat - a java binding for libkstat
Journaled File System (JFS)
K Desktop Environment
Kerberos
Kernel Sockets
Kernel SSL Enhancements
Key Management Framework
Korn Shell 93 integration/migration project
Labeled IPsec
LatencyTOP
Layer 2 Filtering
LDoms Manager
Lending
libMicro - portable microbenchmarks
Link Layer Discovery
Live Media: Technologies for distributions running from CD and other media
Locale Data
lofi compression and cryptography support
lx64 brand
Media Management System
Mega_sas
Mexico
MilaX minimal Live Distribution
MIPS Platform Port
Mozilla DTrace
MRSL.NONsharedDevice
Multi-lingual Glossary
Multi-pathing software (MPxIO)
Multiple disk sector size support
Multiple DOI
Muskoka: An open repository for OpenSolaris technical content
Navigator
Nemo: A Framework for High-Performance Networking
Network Auto-Magic
Network Data Management Protocol
Network MIBs
Network Performance Projects
Network Storage
Network Time Protocol (NTP)
Nevada Globalization
New Design of 4over6 Mechanism Based on OpenSolaris
NFS RDMA transport update and performance analysis
NFS Server in non-Global Zones
NFS version 4.1 pNFS
NFSv4 namespace extensions
Nightingale: Port Songbird to OpenSolaris
NPort ID Virtualization (NPIV)
NUMA
Object Storage Device (OSD) support for Solaris
OHACGE Script Based Plug-in
ON/Nevada (ONNV) Project
Open Development Infrastructure
Open HA Cluster Utilities
Open Sound System
OpenGrok
OpenPegasus CIM Server
OpenRTI
OpenSolaris Busybox
OpenSolaris Desktop
OpenSolaris Hispano
OpenSolaris Security Audit
OpenSolaris support for the QEMU processor emulator: host and guest
PEF: Packet Event Framework
Performance Wrappers
Pkgfactory
Polski Portal
Portail Francophone
Portal Brasil
Portals
Power Management Usability Interfaces
Presto: Automatic Printing Configuration
Printable Many Page Solaris Manuals
Promise SuperTrak RAID HBA Driver
QLogic Converged Network Adapter GLDv3 NIC Driver
Quagga Routing Protocol Suite Integration
RAID Configuration Utility
RBridge (IETF TRILL) support
RDMA Offload Framework
Reno: Login Process Enhancements for Interop
Resource Management
s10brand
SAM/QFS
SCM Migration Project
SCSI RDMA Protocol
SDcard Drivers
Sensor Abstraction Layer
Session Initiation Protocol
SFW
Shell: bourne shell, korn shell, C shell, etc.
Sierra: Intel WiFi Chipsets Support
Simple Panels
SM-HBA Based SAS HBA Management
SMF Documentation
Solaris iSCSI Target
Solaris PowerPC Port
SourceJuicer
Sparks: name service switch/nscd enhancements
Squashfs
Star integration/migration project
Starfish
Starter Kit
Storage Power Management
Sun Security Toolkit
Sun StorageTek Availability Suite
Support for OpenFabrics User Verbs / API on OpenSolaris OS
Support gcc4/GCCfss in Solaris
Suspend/Resume
SVR4 Packaging
Systemz
Tamarack: Removable Media Enhancements in Solaris
Tesla: OpenSolaris Enhanced Power Management
Test Development
Tickless Kernel Architecture
TIPC
Trademarks
Trusted networking interface policy database for Trusted Extensions
Trusted Platform Module support
Use Case
Validated Execution Project
Virtual Console
Virtual Network Machines
Visual Panels
Visualization for HPC
Volo
VRRP: Virtual Router Redundancy Protocol Implementation
VSCAN service
Web Stack
Website
Winchester: Schema mapping and ID mapping for AD Interoperability
Wireless USB Support
Wireless Wide Area Network
X Consolidation
x86 Generic FMA Topology Enumerator
Xen Gate
Xfce: A lightweight desktop environment
ZFS Boot and Install
ZFS on disk encryption support
Zone Manager
Zone Statistics
Русский портал
البوابة العربية
भारतीय पोर्टल
中国门户
日本ポータル
한국 포탈
User Group
Adelaide
Argentina
Arizona
Atlanta
Baltimore-Washington
Bangalore
Bangkok
Bangladesh
Beijing
Bélem
Berlin
Bhimavaram
Bloomington
Campus Ambassadors
Capital Region
Cardiff
Ceara
Charlotte
Chengdu
Chennai
Chihuahua
Chile
Cleveland
Colombia
Columbus
Connecticut
Cracow
Czech
Dallas/Ft. Worth
Danish
Delaware
Edinburgh
Egypt
Finland
Florida
Front Range
FuZhou
Great Lakes
Greece
Hangzhou
Hawaii
HeFei
Houston
Hong Kong
Hyderabad
Indonesia
Irish
Israel
Italian
Jinan
Jogja
Kabul
Kansas City
Latvia
London
Madurai
Manchester
Mato Grosso
Melbourne
Minas Gerais
Minnesota
Montreal
Moscow
Mumbai
Munich
NEA
Netherlands
New England
New York City
New Zealand
NIT Hamirpur
Noroeste
Nuremberg-Erlangen
Oklahoma City
Osnabrück
Peru
Philadelphia
Piaski
Pittsburgh
Porto Alegre
Puget Sound
Pune
Queensland
Rio de Janeiro
Research Triangle Park
Romania
Russia
San Antonio
San Diego
San Francisco
São Paulo
Scottish
Serbia
Shanghai
Shenzhen
Silicon Valley
Singapore
Slovak
South African
Southern Connecticut
St. Louis
Sweden
Switzerland
Sydney
Szczecin
Taiwan
Tecum
Thames Valley
Tokyo
Toronto
Trondheim
Tulsa
Turkey
Ukraine
University of Melbourne
Vale do Paraíba
Vancouver
Venezuela
Welsh - Cymru
Wisconsin
Xi'an
Subsites
Code Reviews
Code Repositories
Package Search
Bugster
Bugzilla
Test Machines
Planet
Mailing Lists
Elections & Polls
ARC Case Logs
Source Juicer
Package Factory
User Authentication
Project jeos Pages
OpenSolaris 2009.06 JeOS License
2009 06 JeOS Prototype VM Image
Staging Downloads
Files


You can force a page break by inserting one of the following commands into HTML page:
<!--NewPage--> <pagebreak/> <?page-break>
It is highly NOT RECOMMENDED to use these directives inside the table cells, as you can get unpredictable results.


We know choosing a new programming language to learn can be difficult, so we've teamed up with engineers at NASA to develop an algorithm to determine the perfect option for you.


WITNESS LIST Natural Resources Committee May 2, 2001-3:00P HB 3588 For: Gangnes, Michele G. (Self and Neighbors for Neighbors) Mesrobian, Ann (Self) Smith, Sheril (Self and Lone Star Chapter-Sierra Club) Against: Smith, Lonnie (TXU Mining & TMRA) On: Chenoweth, Todd (Texas Natural Resource Conservation Commission) Hodgkiss, Melvin B. (Railroad Commission) Musick, Steve (Texas Natural Resources Conservation Commission) SB 2 For: Adams, Jim (San Jacinto River Authority & Region H Planning Group) Archuleta, Ed (El Paso Water Utilities Public Service Board) Boehme, Thomas (Self and Texas Farm Bureau) Bowers, Richard (North Plains Groundwater Conservation District) Clayton, Bill (William's Farms) Halbert, Wayne (Texas Irrigation Council) Holloway, Milton (Texas Economists) Mahoney, Mike (Texas Alliance of Groundwater Conservation Districts) Mitchell, James P. (High Plains Underground Water District #1) Petersen, Ken (Texas Rural Water Association) Williams, C.E. (Panhandle Groundwater District) Against: Williams, John C. (Canadian River Municipal Water Authority) On: Brockman, Matt (Independent Cattlemen's Association of Texas) Grant, John (Colorado River Municipal Water District and Region F Regional Water Group) Hess, Myron J. (National Wildlife Federation) Houston, Jace (Harris-Galveston Coastal Subsidence District) Kramer, Ken (Lone Star Chapter of the Sierra Club)


I am a confident Embedded Engineer specialising in IoT prototyping and development.
I get excited when working with products at conception but also possess the experience and skill to take them from prototype to production, considering the full spectrum of requirements from platform choice through to HMI and UX.
I am equally comfortable deep in the code, motivating and directing a team or standing in front of a customer. This is backed up by 10 years of technical experience in small teams, with recent examples of leading, mentoring and product ownership.
I’ve worked on a number of different projects ranging from low power, network connected industrial sensing systems, to MISRA compliant automotive sensors, to low latency network middlewares, to connected breweries, to vacuuming robots, to next-level, IoT products.
I am also somewhat proficient in electronic design and PCB design/manufacturing processes.
In my spare time, I like to brew beer and listen to music.


Passionate Data Scientist | Scrum amateur | Pentester | Server Admin | Calisthenics devotee
In the field of IT I am passionate about and perform well in fields related to server services, programming languages(JS, Ruby, Python), I love everything related to ethical hacking, to do certain things, SQL injection, XSS, RFI, LFI, AV, MSF. I love teaching pentesting and other topics. I'm currently trying to combine machine learning with penetration tests
Some soft skills: Outgoing, determined and goal-oriented, very good at working and collaborating with people
I am meticulous when designing a website, minify and compress, SEO, speed test, demanding and committed.
I always try to be at the forefront in the latest technologies about backend, React.js, Bootstrap, among others...
The tools for programmers are of vital importance, so I keep up to date on the automation of tasks and others.


synchronized
statement. The lock expression
for this synchronized
statement must be
equal to this
for instance methods
or ClassName.class
for static methods. In
such cases the synchronized statements may be replaced by their contents and the
containing method marked as synchronized
.
Example:
public int generateInt(int x) { synchronized (this) { return 1; } }
After applying the quick-fix the code looks as follows:
public synchronized int generateInt(int x) { return 1; }


The quest to learn a completely new way of thinking of processing information and working through tasks has been nothing short of a difficult task this time around. To say that I have struggled has been as times felt like an understatement however in doing so it has revealed a number of difficulties that I face both personally and 'professionally'. Theirs nothing like a short and seemingly easy request of you that turns in to a massive self-realisation of ones incapability to humble one into diving deep into problem solving processes to figure it all out. A series of REPL. test was exactly this for me, a series of quick tasks that require you to think not just in definition of what code is but how to implement it in seriously confusing ways. (One day I hope to look back at this and think, those were so easy). So an example of this had to be in developing a stratergy to work out the average of a range of scores listed for for four students. The trick of this was to create a function that would allow me to receive an average for each student at my request simply by calling on this function. Okay now working through this was made up of a series of over complicated ways and running off on tangent situations and here is how it all happened. 1. For one I wasn't using the console.log efficiently and was therefore not receiving a clear message of how my information was being received. This in turn turned out to be a huge complication in the way that I was perceiving the information created and decleared. Thanks to the awesome advice that I received this brought an end to this delema. Throughout this process I was not only hugely frastrated but a strong feeling of incompetency was present. Confidence = low. Ultimately the lesson here for me was to come back to the value of process and understanding that their is huge value in talking and walking through issues with others. Reflect on how confident you feel using the problem solving techniques and process: Pseudocode although not truly understood at first it has become a sense of comfort in working through problems. It will be forever my native language and as such should be utilised in this way to work through problems initially. I imagine that this will be my first step in problem solving moving forward. Nothing like a good old fashion trial and error process. This naturally is a step that I continually use with hope that the answer will fall into place Reading error messages is a great guide throughout to atleast locate where issues lie. Googling is by far your very best friend at all stages of the adventure. Where would I be without it is a very valid question. Nothing however can compare to the careful wording you can learn from your peer or coach and walking through that process in real time with their advice. Finally the true process of truly absorbing information is in the reflection process.


A Romantic Vision Of The Software Engineering
Well, it all starts with your first attempt to write a program; a very innocent and and naive program - I mean, your very first “Hello World” and the classic“Read 3 inputs and print the sum of them”. Your only concerns will be some missing commas, whitespaces and some misplaced IF’s - things that may cause a little confusion first. You’ll eve think that it is hard.
#include
int main() {
printf("Hello World");
return (0);
}
Then time will pass, you’ll understand the logic better and get impressed with your first program; 150 lines of pure java code, and you will be amazed by it
Now you have become a programmer - or even better - a software engineer, right?! We shall answer that soon, let’s continue with our timeline…
You’ll commit yourself to build your first not-so-trivial software project; maybe a stock management system built with some sort of web technology and data persistence with some cool database system. After a few days and some effort, you’ll finish your project and be even more amazed…1500 lines of code!
That is, until the first problem comes up with your system and you have to fix it. You’ll probably be coming to your code without having looked at it for a month, and your first reaction, probably, will be this:
And you’ll think “Well…maybe i’m not this Software Engineer thing yet”
From this point on, you will start to study some software developing principles, design patterns and writing reusable and maintainable code. Uff…finally, now you’ll think “I am more professional” and that finally you can deal with the industry, so you’ll come to an important conclusion:
“It’s time to get a software engineering internship”
Well, I will tell you the consequences of this important decision in 3 phases:
Phase 1 — New technologies to study
After a short search for internship opportunities, a software company will eventually hire you as an intern and you, with all your experience dealing with code bases that you created (after all, you hit that 2 thousand lines of code mark, wow!) will think that you’re prepared… Your manager will give you new technologies to study, so you can understand the technologies the company uses: J2EE, JPA, Hibernate, JSF, HTTP, FTP, JavaScript, Jquery, AJAX among others. Well, you’ll be a little shocked at first, that’s normal, but anyway, you, the strong programmer, thinks “it’s okay, i can learn it quickly” which brings us to the big shock that is phase 2.
Phase 2— The company show to you their legacy systems
Ok,so now you studied every concept that were given to in phase 1, and you think “I’m ready to work with the company’s systems”. Then, your manager shows to you their system that was written with java, 10 years ago, with a total of 700,000 lines of code without documentation and he says:
“You will be responsible for the maintenance of this system, here’s the code, study it, good luck!”
And you, the programmer, looks at the code, runs the system, looks at the code again… and your only reaction is:
And this is the moment when you question everything, even the laws of the universe… Nothing makes sense anymore and all you know is a lie:
“seriously, what the ** is this? there’s no way that I can understand this code, it’s giant, messy, old and nothing makes sense” — you think.
And then, the desperation takes over, you realize that everything you’ve learnt on your classes and on codecademy was very different from the real world systems and you don’t know where to start. But after reading the code 10000000 times, you, in a magical way, get to phase 3.
Phase 3— The discovery
After much effort and many sleepless nights, you, start to see the patterns in this many lines of code; you start to see the logical flow and the most important thing:
You start to realize that even a code base without documentation has the power to tell you a story.
“A story? how is that possible?”
Exactly; the more time you spend there trying to understand the code, more you start to see patterns. You feel like the code could talk and tell what problems it is trying to solve; like you were present while the old engineers were brainstorming to find the solution to these problems.
So you, the young prospective engineer, start to see the logical flow in those 700,000 lines of code, and as strange as it may sound, you start to talk with the code in your head. And the most amazing part of it is that the code answers to you, gives you tips and paths to follow so you can understand it better.
Suddenly you are in a state of ecstasy; you have the power over this messy and dirty code, because it makes sense and gains shape:
And then, this quote from Eric Filson makes a lot of sense:
The art of programming is finding patterns where others see only chaos
Yes, this is where your true love story with the art and science of software engineering begins, this is when you build your connection between your mind and code, it’s when you disconnect from the real world and connect yourself to new other universes: your systems.
 The key for this comprehension is to stay mentally connected to the system, feel it, live it, walk inside it just like the processor, step by step, line by line, command by command, and trust me:


Note It is suggested that working directory names do not include spaces as some batch files may encounter difficulties.
Download Stripped down GAE SDK <IP_ADDRESS> Part 1 of 2
from downloads Use the Right-click on the link Save as...
option
and place in a holding directory of your choice. The file will be called gae-local-stripped-1.zip
.
Download Stripped down GAE SDK <IP_ADDRESS> Part 2 of 2
from downloads Use the Right-click on the link Save as...
option
and place in a holding directory of your choice. The file will be called gae-local-stripped-2.zip
.
As indicated as an alternative you could, if preferred, download the fullblown Original GAE SDK <IP_ADDRESS> 1
into
the holding directory of your choice.
GAE-SDK
zips into a directory of your choice that differs from the holding directory. Maintain the internal directory structure. Let us call it X:\gae-sdk
TRI_GAE
to the unzip location ending in either gae-stripped
or appengine-java-sdk-<IP_ADDRESS>
(with no trailing '\').
eg. x:\gae_sdk\gae_stripped
run-ws.bat
described in the next section.
Download Triangular Complete Development Package
from downloads Use the Right-click on the link Save as...
option
and place in a holding directory of your choice. The file will be called tri-devp-pkg.bin
.
Rename this from tri-devp-pkg.bin
to tri-devp-pkg.zip
(this avoids the
'"file" is not commonly downloaded and could be dangerous' message).
Unzip this zip into a directory of your choice that differs from the holding directory and differs from the GAE-SDK
directory.
Maintain the internal directory structure. Let us call it X:\tri-devp
Download Triangular Node.js Only Development Package
from downloads Use the Right-click on the link Save as...
option
and place in a holding directory of your choice. The file will be called tri-devp-pkg-node.bin
. Note You can also use the
Triangular Complete Development Package
as it includes support for the Node.js Variant.
Rename this from tri-devp-pkg-node.bin
to tri-devp-pkg-node.zip
(this avoids the
'"file" is not commonly downloaded and could be dangerous' message).
Unzip this zip into a directory of your choice that differs from the holding directory.
Maintain the internal directory structure. Let us call it X:\tri-devp
Proceed to 02 Validate Environment


My notes
name
created
category
content
dates
Add new note
You have:
active notes
0
archived notes
0
See Archived
name
created
category
content
dates