0%

1、

初学者眼里有很多可能性,专家眼里只有很少可能性。(In the beginner’s mind there are many possibilities, but in the expert’s there are few.)

铃木俊隆(Shunryu Suzuki),日本禅宗僧人

2、

输入要保持开放,输出要保持保守。(Be liberal in what you accept, and conservative in what you send.)

Jon Postel 谈如何设计接口

3、

爬得越高,获救的机会也就越少。

埃德·维斯特斯(Ed Viesturs),美国著名登山家

4、

广受欢迎的技术会被过度使用,Node.js 就是如此,被用在许多不适合的场合。

《Node.js 的过度使用》

5、

Snapchat 是斯坦福大学两个大学生写的一个聊天工具,它基于一个疯狂的想法:用户共享的所有内容都是临时的,半天后就会自动消失,你想看也看不到。

这后来成为社交媒体的新趋势:实时显示”真实生活”,大受欢迎。

《最疯狂的创业想法》

6、

数学家理查德·汉明(Richard Hamming)总是问其他领域的科学家:”你的领域中最重要的问题是什么?”,然后问第二个问题:”你为什么不研究它们?”。

《汉明问题》

虽然表面上看起来很美好,皆大欢喜,但是我觉得三个小孩里严良和普普已经死了,老陈或许也不在了。

1.开场动画三个小人被追杀,最后只剩下一个躲在黑暗里。

2.普普哮喘发作,张东升产生的一丝恻隐之心在听到医院问及地址立马就消散了,挂了电话。这样不愿跟三孩子扯上关系的他可能会把普普送到医院吗?何况当时普普已经昏厥过去,吸氧都不能,送去也很难说来得及了。后面她也再没出现过。

有个花絮张东升一个人吃着三份麦当劳套餐痛哭,之前他答应过带普普来点三份,这证明了普普的去世。不过这段被删了。

3.朱朝阳在读普普写给他的信泪流满面,全剧他只哭过三次,之前都是很受伤的事。为何如此伤感?

4.严良在船上掉下去就死了。老陈腹部重伤住院,上厕所都要老伴扶着,才几天突然就能没事人一样下水救人(在周边那么多jc的情况下让他一个伤员下水救援就不科学),还及时赶上准确无误救下了严良,这未免太像张东升和朱朝阳口中的童话了。

如果仔细看可以看到他之前还是捂着肚子走,水里捞起严良就安然无恙一般生龙活虎的给严良做心肺复苏(我觉得可能这时老陈就没了)。如果普普已死确立,那么后面说普普配型成功的严良和老陈就更不真实了。

5.礼堂那个画面仿佛天堂来客,配的音乐也是所谓的“阴间”音乐,严良一个外校人淡定走进学校礼堂,全校师生跟没看见一样,只有朱朝阳转过头。

严良看朱朝阳的眼神明显带着不满,作为一个算得上有正义感的人,他根本不原谅朱朝阳,如果这是朱朝阳幻想中的童话日记,那还是隐喻了一部分现实。那就是证明了他作的恶,他复制卡的谎言与故意传播害死了普普。温暖的画面配不安的音乐,漠然的与仇视的眼神的对视,绝了。

甚至在船上严良挂了那么久,朱朝阳也并没有伸手拉他一把,就这样眼睁睁看着他掉下去。已经很明显了。

6.至于朱晶晶的死,在我看来已经算明喻了。最后普普信里说的这个真相她连严良都没告诉,那对应她前几集对严良说看见朱晶晶自己摔死了,就可以得出朱晶晶绝对不是意外摔死。要么朱朝阳推下去,要么他见死不救,个人倾向他有看到朱晶晶挂在外面(有衣物挂在外面)并助推,不然只是冷眼旁观的话,他与普普份量是一样的,普普不必要在信里说希望朱朝阳承认真相重新开始。

那个柔光画面(与普普回忆家人的滤镜如出一辙,代表虚假与谎言)朱朝阳探头去看,随后黑屏,出现一段小女孩的哭声,再才是坠地声。坐实了朱晶晶是在外面挂住了没人救才摔下去的。

朱朝阳最后一集说出的后悔给他们开门也印证了他黑化后对朋友截然相反的态度。我觉得他黑化的几个关键点一是被亲爸猜忌,二是被后妈羞辱与王立三番两次置其于死地,三是亲眼目睹张东升杀人现场(质变的一次)。

担心严良在解决张东升的事后主动自首暴露了自己,所以朱朝阳隐瞒了王立绑架自己/张东升杀王立事件(既能在亲爹那刷好感,离间亲爹与后妈关系,又能拉拢张东升,利用他做侩子手除去自己要除掉的人),也开始对朋友目的不纯,不择手段。

他最后两集两次问严良“报警吗”就有了杀意(有趣的是刚开始看到杀人事件先提出报警的是朱朝阳,被不想送回福利院的严良阻止。而后面反过来,是朱朝阳不想严良报警),在看到张东升与其他两人“其乐融融”的情况下,他故意说复制卡的事,并祸水东引到严良。嘴上说着销毁,但他清楚严良不会销毁(毕竟对杀人犯总有戒备心),因此严良必会被张东升视为眼中钉除掉。

结尾他一通电话把两人引到轮船上,说走到尽头就可以看到自己,结果却是让张东升和严良碰头,导致他们打起来。有个猜想是严良是在这里被张东升杀死的。未成年人严良肯定打不过张东升,就算打架经验多,但张东升毕竟杀过那么多人,连王立这种坐过牢的地痞流氓都能干掉。而且当时张东升已经掐住了严良脖子举起了刀,按照这个动势和张东升杀人干脆利落的性格放过他太奇怪了。也已经出现悲凉的配乐与严良遗言一类的话。后面那个严良可能就是朱朝阳想象出来的劝自己不要下手的正面形象,在他童话里这是要当jc的人也说的过去。

普普属于意外情况不在他计划之内,但是他防备普普的一个重要原因就是担心普普把朱晶晶事件告诉严良,所以结局看到信哭出来除了为她的死,还有就是愧疚感。

最后一次朱朝阳跟妈妈吃饭笑着说自己成绩又是第一名,妈妈脸上已经没有笑容,在父亲刚死的情况下还笑得出来跟母亲讲成绩,朱朝阳已经没那么在乎父子情。这个剧里的母亲直觉都很准(包括没有证据就死揪着朱朝阳不放的后妈),或许母亲早就察觉到了儿子身上的变化超出了自己的控制,而无力挽回。

当初三人一起在船上飞往月球的美梦,终于变成了一个阴暗中孤独生长的“旭日东升”。张东升与朱朝阳有许多共通之处,都热爱数学,都喜欢笛卡尔,相信事物的两面性,有阳光的名字与阴暗的个性,都可以为了得到至亲心目中的第一顺位而对关系不好的亲人痛下杀手,甚至都爱穿白衬衫。后期还有种亦师亦友的惺惺相惜之感。在船上那番交接,也是彻底失败的张东升把这面阴暗的旗帜递交到加强版自己朱朝阳手上的节点。只是朱朝阳做的更不露声色,成功将自己伪造成了一名受害者,以至于演的都感动了自己。

Pistol / Handgun - The handgun is a firearm designed to be held in the palm of one hand and intended to be fired as such (though two hands are generally used for accuracy with the weapon held away from the body at arm’s length). The handgun takes on various forms including the early single-shot forms, the later revolver-type forms and the modern semi-automatic pistol. Handguns given full-automatic fire are generally classified as’machine pistols’ for their firepower as related to a machine gun. EXAMPLES: .44 Magnum; Flintlock Pistol; Walther P99; Colt M1911.

Musket - Muskets appeared around the 16th Century and managed an existence into the 19th Century. These firearms utilized a long, smoothbore barrel for range, were operated from the shoulder utilizing a two-hand hold and fired a spherical metal ball. Muskets were muzzle-loading instruments (that is, loaded from the barrel) which made them time-consuming to reload, forcing lines of infantry (musketeers) to be used in formation. The introduction of rifling brought about the classification of ‘rifled musket’ detailed next.

Rifled Musket - Rifling was the gunsmithing practice of adding grooves within the bore of a barrel to help a bullet retain accuracy and range once it left the weapon. Many smoothbore muskets were converted by rifling to become ‘Rifled Muskets’, a sort of interim design between the original musket and the newfangled ‘rifle’. The introduction of the breech loading cartridge all but killed the musket as a viable firearm.

Rifle - Rifle is a general term used to represent a modern-day ‘long gun’ featuring ‘rifling’ inside the barrel that promotes accuracy at range and is able to be fired from the shoulder using both hands to complete the three-point hold. Rifles include the sub-groups of Battle Rifle and Assault Rifle.

Battle Rifle - The Battle Rifle appeared after World War 2 and was an automatic ‘long gun’ that utilized a full-power rifle-based cartridge. Battle Rifles formed many of the frontline service rifles of the Cold War and were primarily centered around the 7.62x51mm cartridge in the West. EXAMPLES: HK G3; M14; FN FAL.

Assault Rifle - Classification falls between submachine gun and light machine gun. Assault rifles are today’s modern frontline service rifles, having replaced the Battle Rifle used during the Cold War. An assault rifle is categorized by its use of an’intermediate’cartridge size (that is, less than a full-power rifle cartridge - ex: 7.62x54mmR) coupled with a detachable box magazine. The German WW2-era StG 44 is largely accepted as the first’true’ assault rifle. EXAMPLES: Colt M16; Kalashnikov AK-47; L85A1; HK G36.

Carbine - Carbines are generally shortened forms of existing long guns and can be based on muskets or rifled automatic weapons. The carbine retains the capability to fire a full-power rifle cartridge though this is delivered in a more compact form brought about by shortening the barrel and forend assemblies. Due to the modifications, carbines generally lose accuracy at range though they are intended as close-quarter weapons. Carbines fall between submachine guns and assault rifle concepts. EXAMPLES: KAR 98K; CAR-15; M1 Carbine; M4 Carbine.

Submachine Gun - Submachine Guns are automatic weapons of compact size when compared to their larger rifle cousins. Submachine guns also feature rifled barrels but barrels that are shorter in length to promote the compact sizes required of this weapon class. Additionally, submachine guns generally utilize pistol cartridges which are lower-powered when compared to full-size long guns but carry inherent man-stopping capabilities all their own. The earliest ‘true’ submachine gun was the German WW1-era Bergmann MP18 which saw extended service into WW2. EXAMPLES: HK MP5; MP38/40; STEN Gun; UZI 9mm; AKSU-74.

Designated Marksman Rifle - Designated Marksman Rifles (DMR) are automatic weapons outfitted with sniper-type optics and issued to squad-level sharpshooters. DMR personnel fall between the standard frontline infantryman and the dedicated sniper element and their weapons are modified to suit the role. Modifications include the installation of optics and a bipod for accuracy at range. Their weapons are generally full-sized long guns firing a full-power rifle cartridge from a high-count detachable box magazine through a semi-automatic action (one bullet fired for every trigger pull). They may actually be modified Battle Rifles detailed above. EXAMPLES: M14; FN FAL; AR-10; HK G3.

Sniper Rifle - Sniper Rifles are operated by specially trained shooters centered on accuracy against targets at long ranges. Weapons are typically very accurized systems with optics, bipods and adjustable shoulder stocks as standard. Traditional sniper rifles are also manually-actuated bolt-action weapons that require the operator to move the bolt handle to introduce a cartridge into the firing chamber. Sniper rifles are nearly always chambered for the 7.62mm full-power rifle cartridge for its range and man-stopping qualities. EXAMPLES: Remington M40; Mosin-Nagant; H-S Precision Pro Series 2000.

Anti-Material Rifle - Anti-Material Rifles owe their existence to the bolt-action rifles of old. The first anti-material rifle was developed by the German Army in World War 1 to counter the threat posed by British tanks (‘Landships’). The anti-material rifle is centered on the firing of a full-power large caliber cartridge - typically the 12.7x99mm NATO (.50 BMG), the 14.5x114mm Russian or, most recently, the 20mm cartridge. Their intent is to engage critical components of an armored vehicle, disabling key systems that would render the vehicle inoperable. Additionally, anti-material rifles can engage various other targets including communications equipment and even personnel - in the latter case having a truly disastrous effect on the target. Anti-material rifles have grown in popularity over the recent decades as they become more of a primary fixture on the modern battlefield.

  • Aircraft Carrier

    Naval vessel able to launch and retrieve airplanes

  • Amphibious warfare ship

    vessels of various sizes for landing personnel and vehicles

  • Aviso

    (Spanish or French) Originally a dispatch boat, later applied to ships equivalent to the Royal Navy sloop

  • Barque

    A sailing vessel with three or more masts, fore-and-aft rigged on only the aftermost

  • Barquentine

    A sailing vessel with three or more masts, square-rigged only on the foremast

  • Battlecruiser

    A heavily-armed cruiser similar to a battleship but possessing less armour

  • Battleship

    A large, heavily armoured and heavily gunned powered warship

  • Bilander

    A ship or brig with a lug-rigged mizzen sail

  • Bireme

    An ancient vessel, propelled by two banks of oars

  • Birlinn

    (Scots) Clinker-built vessel, single-masted with a square sail also capable of being rowed

  • Blockade runner

    A ship whose current business is to slip past a blockade

  • Boita

    A cargo vessel used for trade between Eastern India and Indochina

  • Brig

    A two-masted, square-rigged vessel

  • Brigantine

    A two-masted vessel, square-rigged on the foremast and fore-and-aft rigged on the main

  • Caravel

    (Portuguese) A much smaller, two, sometimes three-masted ship

  • Carrack

    Three or four masted ship, square-rigged forward, lateen-rigged aft; 14th to 16th century successor to the cog

  • Cartel

    A small boat used to negotiate between enemies

  • Catboat

    A sailing vessel characterized by a single mast carried well forward (i.e., near the bow of the boat)

  • Clipper

    A fast multiple-masted sailing ship, generally used by merchants because of their speed capabilities

  • Coastal defense ship

    A vessel built for coastal defense

  • Cog

    Plank built, one mast, square rigged, 12th to 14th century, superseded the longship

  • Collier

    A vessel designed for the coal trade

  • Corvette

    A small, maneuverable, lightly armed warship, generally smaller than a frigate

  • Cruise ship

    A ship used for carrying passengers on pleasure cruises

  • Cruiser

    A warship that is generally larger than a destroyer, but smaller than a battleship

  • Destroyer

    A warship mainly used for anti-submarine warfare

  • Destroyer escort

    A lighter destroyer intended primarily for escort duties

  • Dhow

    traditional sailing vessels with one or more masts with settee or sometimes lateen sails, used in the Red Sea and Indian Ocean region

  • Dreadnought

    An early twentieth century type of battleship characterized by an “all big gun” armamentPre-dreadnoughtBattleships predating the dreadnought, characterized by having an offensive battery of mixed calibers

  • Drekar

    A Viking longship with sails and oars

  • Dromons

    Ancient precursors to galleys

  • East Indiaman

    An armed merchantman belonging to one of the East India companies

  • Felucca

    A traditional Arab type of sailing vessel

  • Fire ship

    A vessel of any sort, set on fire and sent forth to cause consternation and destruction, rendering an enemy vulnerable

  • Fluyt

    A Dutch-made vessel from the Golden Age of Sail, with multiple decks and usually three square-rigged masts, usually used for merchant purposesFlüte (Frenchen flûte, “as a fluyt”): A sailing warship used as a transport, with a reduced armament

  • Frigate

    A term used for warships of many sizes and roles over the past few centuries

  • Galleass

    A sailing and rowing warship, equally well suited to sailing and rowing

  • Galleon

    A sixteenth century sailing warship

  • Galley

    A warship propelled by oars with a sail for use in a favourable wind

  • Galliot

    Name refers to several types of sailing vessel, usually two-masted

  • Gunboat

    Various small armed vessels, originally sail and later powered

  • Ironclad

    A wooden warship with external iron plating

  • Junk

    A Chinese sailing ship that widely used in ancient far east and South China sea which includes many variants such as Fu Ship, Kwong Ship.

  • Karve

    A small type of Viking longship

  • Knarr

    A large type of Viking cargo ship, fit for Atlantic crossings

  • Lorcha

    A sailing ship with mixed Chinese (rig) and western design (hull) that used since 16th century in far east.

  • Landing Ship, Tank

    Military ship for landing troops and vehicles

  • Liberty ship

    A type of welded American merchant ship of the late Second World War period, designed for rapid construction in large quantity

  • Liner or ocean liner

    A large passenger ship, usually running on a regular schedule. The same vessel may be used as a cruise ship

  • Littoral combat ship (LCS)

    US warship intermediate in size between a corvette and a frigate, similar to a sloop

  • Longship

    A Viking raiding ship

  • Man-of-war

    A heavily-armed sailing warship

  • Merchantman

    A trading vesselArmed merchantmanA trading vessel possessing weapons for self-defenseMerchant aircraft carrierA merchant vessel capable of launching aircraftMerchant raiderAn armed vessel used for raiding disguised as a merchant vessel

  • Mistico

    Small, fast two or three-masted Mediterranean sailing vessel

  • Monitor

    A small, very heavily gunned warship with shallow draft, designed for coastal operations

  • Motor ship or motor vessel

    A vessel powered by a non-steam engine, typically diesel. Ship prefix MS or MV

  • Nef

    A large medieval sailing ship

  • Paddle steamer

    A steam-propelled, paddle-driven vessel

  • Panterschepen (Dutch) or Pansarskepp (Swedish)

    Types of ironclad, heavy gunboats designed for coastal or colonial service

  • Penteconter

    An ancient warship propelled by 50 oars, 25 on each side

  • Pinisi (or Phinisi)

    A fast, two-masted ship traditionally used by the Bugis of Eastern Indonesia

  • Polyreme

    A generic modern term for ancient warships propelled by two or three banks of oarsmen, with three or more files of men per side, sometimes with more than one man per oar, and named after the number of files. Polyremes comprise the trireme (3 files), quadrireme, quinquereme, hexareme or sexireme (probably a trireme with two rowers per oar), septireme, octeres, enneres, deceres, and larger polyremes up to a “forty”, with 40 files of oarsmen, 130m long, carrying 7,250 rowers, other crew, and marines

  • Pram (ship)

    A pram or pramm is a type of shallow-draught flat-bottomed ship. There is also a type of boat called Pram

  • Q-ship

    A heavily-armed vessel disguised as a merchantman to lure submarines into attacking

  • Quinquereme

    An ancient warship propelled by three banks of oars; respectively the top, middle, and lower banks had two, two, and one (i.e., 5 total) men per oar

  • Royal Mail Ship

    Any ship carrying mail for the British Royal Mail, allocated ship prefix RMS while doing so. Typically a fast liner carrying passengers.

  • Schooner

    A fore and aft-rigged vessel with two or more masts of which the foremast is shorter than the main

  • Settee

    Single-decked, single or double-masted Mediterranean cargo vessel carrying a settee sail

  • Shallop

    A large, heavily built, sixteenth-century boat which is fore-and-aft rigged; more recently a poetically frail open boat

  • Ship or full-rigged ship

    Historically a sailing vessel with three or more full-rigged masts. “Ship” is now used for any large watercraft

  • Ship of the line [of battle]

    A sailing warship generally of first, second or third rate, i.e., with 64 or more guns; until the mid eighteenth century fourth rates (50-60 guns) also served in the line of battle. Succeeded by the powered battleship

  • Slave ship

    A cargo vessel specially converted to transport slaves

  • Sloop

    A fore-and-aft rigged sailing vessel with a single mast; later a powered warship intermediate in size between a corvette and a frigate

  • Small Waterplane Area Twin Hull (SWATH)

    A modern design built for stability in rough seas; predominantly used for research sessels

  • Snow

    A small sailing ship, with a foremast, a mainmast and a trysail mast behind the main; sometimes armed as a warship with two to ten guns[1]

  • Steamship

    A ship propelled by a steam engine; includes steam frigates. Ship prefix SS for merchant vessels

  • Tartane or tartan

    A single-masted ship used for fishing and coastal trading in the Mediterranean from the 17th to the late 19th century, usually rigged with a large lateen sail, and a fore-sail to the bowsprit.

  • Trabaccolo

    A type of Mediterranean coastal sailing vessel

  • Tramp steamer

    A steamer which takes on cargo when and where it can find it

  • Trireme

    An ancient warship propelled by three banks of oars per side

  • Troopship

    A ship used for transporting troops. Large ocean liners, fast enough to outrun warships, were often used for this purpose during wartime

  • Victory ship

    Mass-produced cargo ship of the Second World War as a successor to the Liberty ship

  • Xebec

    A Mediterranean sailing ship, typically three-masted, lateen-rigged and powered also by oars, with a characteristic overhanging bow and stern

  • Yacht

    A recreational boat or ship, sail or powered

1. Allowing Paper Clutter to Accumulate

Even with online billing and banking, there is still a mountain of paper that ends up in our homes. Magazines, newspapers, school papers and projects; they have a tendency to pile up. Don’t let that happen.

Designate a place near the entryway for all mail, periodicals, and paper forms and keep a shredder or recycling bin close by. At least once a week, sort through and complete the needed action or toss.

File important papers like tax receipts. Take digital photos of children’s special artwork or frame them for display. Share magazines with retirement homes, schools, or simply read the articles online.

2. Leaving Wet Towels and Shower Curtains Bunched Up

Want to spend less time in the laundry room and scrubbing mildew from bathroom surfaces? Don’t leave wet shower curtains bunched up and wet towels in a heap on the floor.

This is one of the simplest bad habits to break. By closing the shower curtain after each use, it will dry more quickly and discourage mildew growth. By hanging wet towels to dry, you’ll get a second or third use and lighten your laundry loads.

3. Using Too Much Cleaning Product

If a little bit of cleaner works, then a lot of cleaner will work better and faster? Right? That’s not how it works.

Using too much cleaner or laundry detergent can actually cause more harm than good. If an excess of cleaning product is not rinsed away completely, the residue becomes a dirt magnet, trapping soil. That’s why you should read directions and always use the recommended amount or even a little less. You’re wasting time and money on the extra product and the water to rinse it away.

4. Cleaning With Dirty Tools

How can you expect clean results when you are using dirty cleaning tools? If your washer has an odor from built-up bacteria in detergent residue, your clothes are going to stink. If your vacuum bag or filter is filled with dust, it won’t do a good job sucking up any more. A dirty mop or sponge simply pushes around more soil and bacteria.

Take the time to thoroughly clean tools after every use by emptying completely or washing in hot water and adding a disinfectant. Periodically, replace with new tools.

5. Using One Disinfectant Wipe to Clean Entire Bathroom

Disposable disinfectant wipes are great for a quick wipe down of a bathroom sink. But that little square hardly contains enough disinfectant to clean an entire bathroom. By the time you reach the toilet seat and handles, the disinfectant qualities are gone and you are simply spreading bacteria from one surface to another.

To be effective, the wipe should contain enough disinfectant moisture so the surface remains wet for at least four minutes. For a thorough cleaning, use multiple wipes or a clean cloth and sufficient disinfectant and water solution.

6. Leaving Dirty Dishes in the Sink

How much longer would it take to put that dirty glass in the dishwasher instead of the sink? Leaving dirty dishes in the sink is the perfect breeding ground for bacteria and a jackpot for hungry insects.

Train everyone in the household to either put the dishes in the dishwasher or wash them immediately.

7. Wearing Outside Shoes in the House

Taking just a few seconds to remove your shoes each time you come in from the outside will save you hours of vacuuming. Not to mention the bacteria and germs that will stay out of living areas.

Whether entry is through a mudroom or the front door, make this habit simple for everyone by providing a bench or chair for easier shoe removal. Keep a shoe tray close by for wet or muddy shoes and a bin to collect each family member’s footwear.

8. Storing Cleaning Products Incorrectly

Do you spend half your designated cleaning time trying to find the proper cleaners and tools? This is a bad habit that’s easy to change.

Gather together the cleaning supplies you need for each area of the home and store them close to that area. Bathroom cleaners can be placed in a small plastic carryall and stashed on a shelf or under the sink. Create two baskets of supplies if you have upstairs and downstairs bathrooms.

Keep dusting and furniture cleaning products and tools together for quick touch-ups. And, of course, all laundry products should be stored safely in the laundry room.

9. Hoarding Food in the Refrigerator

If you know that your family hates leftovers, then why bother to stash them in the refrigerator? If you are not going to use food promptly, just go ahead and toss it. Improperly stored food promotes mold and bacteria growth and makes cleaning out the refrigerator a much bigger task than it needs to be.

10. Leaving Bed Unmade

Even if the rest of the bedroom is neat and clean, an unmade bed makes it look messy. Just making the bed each morning is a habit that will promote keeping the rest of the room (and maybe the entire house) organized.

Make the task simple by selecting bedding that is easy to spread up neatly. A bed with a simple comforter and pillow shams is much easier to make than one with lots of fussy pillows.

11. Not Reading Directions

Have you ever had to redo a task like cleaning soap scum from tile because the cleaner didn’t work? Maybe you didn’t read the directions.

Most cleaners don’t work instantly and need a bit of time so that the ingredients can break down the soil and lift it so it can be easily wiped or rinsed away. Spend 30 seconds reading the directions to avoid 30 minutes of extra scrubbing.

12. Using Harsh Cleaners

Just like using too much cleaner can be a bad habit, using a cleaner that is too harsh for the job is also wrong. You can do more harm than good if the cleaner strips away finishes or creates hazards for your pets and family.

A good example is chlorine bleach. While it is a good disinfectant, it is not a good dirt and grime remover and the fumes can be toxic. Always use the gentlest cleaning products needed to produce results.

13. Dusting Last When Cleaning

Save yourself some effort by dusting before you vacuum. A room should be cleaned from the top down so the dust lands on the floor to be swept or vacuumed away.

And remember how that one disinfectant wipe can’t effectively clean an entire bathroom? The same goes for a disposable duster. If it has been awhile since you dusted, grab a clean duster when the one you’re using turns a solid grey. You’re no longer trapping dust, you’re just pushing it around with a dirty duster.

14. Not Completing Tasks

We all get interrupted, but try to complete a task once you’ve started it. If you bring out the ironing board, don’t stop for a social media break until all of the ironing is done.

If you only have 15 minutes to clean, start by removing clutter and putting items in their proper place. Then if you get sidetracked, you can come back later to do the deeper cleaning.

15. Waiting Until the Cleaning Job is Overwhelming

Putting off cleaning and waiting until the task has become overwhelming is one of the hardest bad habits to break. Most of us can’t face a disaster and simply avoid it for as long as possible.

But if you and your family do a bit of cleaning each day, like load and empty the dishwasher, complete a load of laundry, and vacuum one or two rooms, then cleaning the entire house will not be so overwhelming.

1. Banana Bread

To this category, we can also add zucchini bread. Both banana and zucchini bread are dense, moist, sweet treats, usually chemically leavened with baking soda or powder. It’s supposed that both of these “quick” breads got their start in the United States, where 18th-century bakers first used pearlash, a refined form of potash, to create carbon dioxide in dough. Today, American bakers search online for banana bread recipes more often than any other bread. It’s so popular, it even has its own holiday: February 23 is National Banana Bread Day.

2. Baguette

Nothing else in the bread family, not even the wonderfully flaky croissant, conjures images of the Eiffel Tower and all things French the way the baguette does. The long, stick-like loaf, also called French bread (thanks to its origins), is made with flour, yeast, water, and salt. From those simple ingredients rises the iconic baguette, distinguished by its chewy crust, feather-light interior, and topside slashes, which allow for gas expansion during baking.

3. Breadstick

Would it really be an Italian meal without a serving of this pencil-thin dry bread sitting atop the table as an appetizer? Much smaller than a baguette, breadsticks are said to have originated in the boot-shaped country in the 17th century. Nowadays, American restaurants sometimes serve them soft and warm, topped with cheese and garlic, or as a dessert, with icing and cinnamon.

4. Brioche

Our tastebuds owe the French a huge debt of gratitude for inventing brioche, a traditionally sweet yeast bread loaded with eggs and butter. People have been enjoying the golden, soft-as-a-pillow pastry forever—the word brioche dates to 1404—and it’s now commonly used as hamburger buns, dinner rolls and even in French toast recipes.

5. Challah

Challah, which is made with eggs and most often braided, is integral to the Jewish faith. Served on the Sabbath and holidays, it was originally called berches before the word challah was adopted in the Middle Ages. The bread continues to carry rich symbolism, from the poppy and sesame seeds sprinkled on top that symbolize manna from God, to the plaited shape, which represents love.

6. Ciabatta

Ciabatta hails from Italy, where the word means “slipper” in the native language. Usually broad, flat and somewhat collapsed in the middle, it’s a lot more flavorful than footwear, and perfect for use in paninis and sandwiches. Unlike most of the bread on this list, this wheat flour-based bread is a recent invention, first produced in 1982.

7. Cornbread

The bread maybe most associated with the region below the Mason-Dixon Line, cornbread originated with Native Americans. Made from finely-ground corn, wheat flour, eggs and milk (or buttermilk), Southern-style cornbread is traditionally baked in a skillet, either unleavened or with baking powder. Crumbly, rich and crispy, this classic cornbread should be enjoyed quickly, because it doesn’t store well.

8. Focaccia

Another bread originating from Italy, focaccia is a flat, dimpled yeast bread resembling pizza dough that’s baked at high temperatures in sheet pans. Often topped with olive oil, rosemary and coarse salt, focaccia’s exact origins are unknown, though it might date back to Ancient Rome. Focaccia’s name is derived from the Latin panis focacius, which means fireplace bread. Modern varieties include savory toppings like olives, tomatoes, and mushrooms.

9. Multigrain Bread

Seemingly, not a lot of creativity went in to naming multigrain bread, since it’s defined simply as bread made from more than one grain. It can include flax, oats, and barley, but be aware that even bread made from wheat and a smidge of flour from a second grain can be called multigrain. If you’re looking for dense, hearty multigrain, which is terrific for sandwiches, be sure to check the label.

10. Pita Bread

Like tortillas and naan, pita is a flatbread. Soft and round, this slightly leavened bread, which originated in the Middle East some 4,000 years ago, is cooked at a high temperature. This causes the dough to puff up, leaving a handy interior pocket when it cools. Goodies like falafel can be stuffed into the pocket, although pitas are also wrapped around ingredients—as in the case of gyros—or used to scoop up dips such as hummus and tzatziki.

11. Pumpernickel

A type of rye bread, flavorful pumpernickel hails from Germany, where it’s made with coarsely ground whole rye berries. The traditional version requires a lot of patience to create, since the recipe calls for baking pumpernickel at a low temperature for as long as 24 hours. Americans typically eschew the marathon oven session, instead producing pumpernickel’s dark hue by adding molasses or coffee.

12. Rye Bread

Crucial to beloved deli sandwiches like pastrami and corned beef-based Reubens, rye bread can come light, medium or dark, depending on which part of the rye berry is used to make the flour. In Europe, bakers tend to use 100% rye flour, while in the U.S., rye bread may be mainly made from wheat flour. Some recipes call for adding caraway or dill seeds on top.

13. Soda Bread

As anyone who seriously celebrates St. Patrick’s Day will tell you, the world’s most legendary soda bread comes courtesy of the Emerald Isle. Recipes vary widely between Ireland and the U.S., but traditional soda bread contains soft wheat flour, buttermilk, baking soda, and salt. Dense with a thick crust, this bread has a mild flavor, though in the U.S., bakers like to add raisins, giving it a slight sweetness.

14. Sourdough

Thought to have originated in Egypt in 1500 B.C., sourdough bread is created via a long fermenting process using yeasts and lactobacilli that occur naturally. This creates lactic acid, which gives the bread its signature, slightly sour flavor. Sourdough bread, pretty much a trademark food for the San Francisco Bay area, is better for digestion and blood sugar control, as well as more nutritious, than many other kinds of bread.

15. Whole Wheat

Speaking of healthy breads, whole wheat, which is one of a range of whole grain breads, is one of the very best breads for your body. Made from flour that uses the entire grain, including the bran and germ, whole wheat offers more fiber, protein, and vitamins than white bread. It also boasts a richer flavor and aroma.

Backwards Compatibility

Java is almost unique in being able to run code from 25 years ago on a modern version of Java. The language developers take backwards compatibility very seriously, and because of this many organisations are happy to make Java their primary development platform, knowing that the code will still run on the JVM for years to come.

Maturity

There are plenty of advantages to having been around for a long time. For the last 25 years, developers have been writing applications in Java for a huge range of industries and business types, and for different platforms. Meanwhile, over these 25 years, developers have been learning Java in schools, universities, boot camps, and on the job. This has created a large ecosystem that has had time to learn from experience and continues to grow. Java, and the problems it can solve, is well documented and well supported by vendors and non-profit organisations and individuals. Very importantly for developers like us, the maturity and broad adoption of Java means there are plenty of jobs for developers who want to code in Java!

Constant Improvement

In contrast to backwards compatibility and maturity, is the evolution of the platform and the language. Since 2017 (Java 9) there’s been a new release every six months, which has enabled a steady stream of changes and improvements to the language. Combined with Preview Features, the language is able to experiment with new syntax, get feedback from developers, and then standardise new features that really work well for those who use the language.

Balance

Java has a difficult balance to strike between backwards compatibility and embracing the future. The current approach of valuing backwards compatibility and releasing every six months, but with a Long Term Support release every three years, seems to strike the right balance. The language is able to evolve by providing warnings for deprecated features that will be removed, and by having replacements for anything that might go away.

Those who wish for extra stability can stay on a Long Term Support release. To reduce their risk when it does come time to upgrade, they could be regularly testing against every new release. Those who are happy to upgrade every six months can update to the latest version of Java every time it comes out. Developers who want to try out new syntax even before it’s standardised can enable preview features, and those who want to do so as soon as possible can even use the Early Access release of a version that’s not out. Teams using modern versions of Java really can have the best of all worlds.

Standards

Standards might not be as exciting to a developer as language features, but having standards for Java, for Java EE and Jakarta EE, and for common use-cases that developers run into, does make a developer’s life easier. Understanding how to use JDBC to talk to a database means that we don’t have to care about how the database driver is implemented, the way we interact with it is always the same. The JCP is one of the processes used to determine standards for Java.

The Java Language Specification covers what Java-the-language looks like and how the compiler should work. It includes the Java Memory Model, which can help us to predict how an application might behave, regardless of JVM or hardware. The Java Virtual Machine Specification covers the lower-level details down in the JVM. These specifications enable JDKs distributed by different vendors, running on different platforms, to behave in specified, predictable ways. Which leads us to…

Write Once Run Anywhere

WORA was one of the original ideas behind Java, which seems so obvious these days that we might not even realise how ground-breaking it was. I remember working for a very, very large organisation who, back in 2002, switched from their previous technology stack to Java simply because they had a lot of different hardware lying around, and being able to run new Java applications on it instead of having to buy specific hardware for applications was one of the main reasons they moved all their development to Java. In this day and age of Cloud this might seem less relevant, but in fact just because we don’t always see WORA in action does not mean we’re not still taking advantage of it. And of course, if you’re using IntelliJ IDEA (or NetBeans) you’re taking advantage of WORA on the desktop.

Performance

It sometimes comes as a surprise to those who are less familiar with Java, but Java is a very high-performance language. It’s a mature platform that has 25 years of performance improvements; numerous garbage collectors with different performance profiles; and the JVM optimises our code at runtime for our real production use-cases far better than most human developers ever could. Java is used extensively in the finance world, for example, which depends on low-latency transactions and predictable performance.

Memory Management and Garbage Collection

Automatic Garbage Collection is something else that, 25 years on, we generally take for granted. We don’t have to think about how memory is allocated in our applications, or how to free it. Each JVM has one or more different GC algorithms, so we can pick one that works well for our application without having to concern ourselves too much with the internals, we can just get on with writing the business logic for our applications.

Observability and Management

If we are interested in what’s going on while our application is running, there are a huge number of tools available to us. Many of them are even free, particularly since Java Flight Recorder and Mission Control are now part of OpenJDK (since Java 11). Tools like JMX even allow us to dynamically manage our applications too.

The Java Virtual Machine (JVM)

Many of the features we’ve just mentioned are features of the JVM, but we specifically want to call out the JVM, and the fact that it’s separate from Java-the-language. There are many reasons to love the JVM, including some of the things we’ve already covered: WORA, runtime optimisations, performance, vendor choice, etc., much of which is made possible because of standards and specifications. It’s important that the JVM is separate from Java-the-language, too. It means different languages can be built upon the platform, taking advantage of all the great features of the JVM we’ve just mentioned while providing different types of syntax and language features.

Other JVM Languages

One of the reasons Java survived, even thrived, in those quiet years between Java 6 and 8 (Java 7 has some great features but it didn’t feel like a big release for Java developers) is because of the other JVM languages. At JetBrains of course our favourite is Kotlin, but the JVM is a platform for other popular languages like Groovy, Scala, Clojure and JRuby, and a huge number of other new and re-implemented languages. In many cases, interoperability between these languages and classic Java helps us to embrace and leverage this variety.

Libraries and Frameworks

One of the most compelling arguments is the huge amount of choice of libraries and frameworks we have, many of which are Open Source and free to use. Popular frameworks like Spring, and Spring Boot in particular, make it easy to create anything from small services to large and complex enterprise applications. Standards mean that often it’s not hard to understand and use a library when we’ve been using something similar in another context. The maturity of Java, and the community’s early adoption of open source, means that there’s usually an existing solution for standard problems; there’s no need to re-invent the wheel. It also means that since many of these solutions have been around, and in use, for a long time: they’re well tested, well understood, and well documented.

Build Tools and Dependency Management

Long gone are the days when a poor developer had to search on the internet for some unknown JAR file containing some class that the code they are trying to run apparently requires. Maven and Gradle, in particular, made it easy to build and deploy an application, of course, but also to set up a project in a standard way with all the required dependencies. It’s straightforward to start coding in either a new or existing project. Public repositories like Maven Central and Bintray give us well-known places to find (and publish) libraries.

JUnit and Automated Testing

JUnit was created in 1997 so is nearly as old as Java itself! It is by far the most common automated testing framework in the Java world, and both JUnit and TestNG are shipped with IntelliJ IDEA since it’s assumed a testing framework will be needed with any new Java project. It’s likely that modern testing frameworks for a whole range of languages are based on the ideas we now take for granted from JUnit. The Java community’s culture of automated testing owes a lot to this one library.

IDEs

This is the IntelliJ IDEA blog, we weren’t going to forget this one! Whether you believe the verbosity of Java requires an IDE, or that actually Java can really leverage an IDE because of its static typing, the fact is that Java developers love their IDEs (and we love you!). Learning to use an IDE effectively (whether it’s IntelliJ IDEA, Eclipse, or NetBeans) can significantly improve a developer’s productivity, via: code completion and generation, running tests, debugging, navigation, and a bunch of other features. Java developers are usually extremely enthusiastic about the benefits an IDE brings.

Community

The Java Community is a large, mature, vibrant, and welcoming community. There are Java User Groups in many cities worldwide, and a Virtual Java User Group if you can’t get to a physical meetup. The Java Champions are recognised technical leaders in the Java world who became known for sharing things that are useful or interesting for Java and JVM developers. Java has a huge Open Source community, including the JDK itself via OpenJDK. The Java Community values learning, teaching, and constant improvement, cares about standards and “best practice”, and is pragmatic about how to apply these in a real-world environment.

People

The Community is made up of people, of course, but when I asked what developers value most about Java, many of them specifically called out individuals in the Java world who had impacted them. These range from colleagues and teachers, to people like Brian Goetz, Angie Jones, Georges Saab, Mala Gupta, Venkat Subramaniam. Some people even mentioned me. Personally, I came to Java because I learnt it at university and there were plenty of jobs, but I stayed because I love the people and the help and support I’ve had from them.

Javadoc and Documentation

Java makes API documentation a key part of the language via Javadoc. The three different types of comments (Javadoc, block and line) clearly indicates what sort of commentary a developer is leaving. Javadoc specifically encourages developers to leave helpful documentation for other developers who call a method, or use a class or package. If a developer cannot find detailed tutorial information on a library or piece of code, there’s usually Javadoc that can help point them in the right direction.

In addition, the Java ecosystem generally seems to expect (and provide) good quality documentation for developers. Prospective committers to open source projects are encouraged to submit pull request of Javadoc comments or other documentation, and developers all over the world ask and answer questions on StackOverflow, or blog about solutions to specific problems.

Open Source

Not only did the Java community embrace open source early on, but now the JDK itself is open source too via OpenJDK. Open source makes it easier for multiple vendors, and individuals, to be involved and collaborate. It’s also fascinating to be able to look at the code of Java itself. Open source code provides a great opportunity for developers like us to learn from people who have already done all the hard work thinking about and solving complicated problems.

Free

The Java platform and many of the most popular tools used in the Java ecosystem don’t require a developer (or often even a profit-making organisation) to pay money to use them. Even after Oracle changed its licensing and support in Java 11 they (and many other vendors) still provided a way to use the language for free in production. The open source projects, build tools, and IDEs already mentioned in this article are all either free or have a free option. This makes Java appealing for developers getting started with coding, and for organisations of all sizes who need to build software while keeping an eye on the budget.

Object-Oriented

Object-oriented programming is not the only game in town, of course, and every paradigm has its advantages and disadvantages. Java was designed as an OO language right from the start, and many examples of design patterns and other coding best practice for OO are demonstrated in Java. If you want an object-oriented programming language, Java should be high on your list of ones to try.

Evolution and Adaptation

Java was, and still is, an object-oriented programming language. But it has also successfully adopted some concepts from functional programming (like lambda expressions and immutable data structures) and made them work nicely within the OO paradigm. Type inference (for example var) allows us to still have the benefits of a statically typed language, but with less boilerplate. Computer science is still a relatively young discipline, yet as we learn things they can be applied to our existing tools. Java (the language and the whole ecosystem) is constantly evolving according to new trends and new “best practices”, and also as a result of seeing how things work out in the real world.

Java also gets to benefit from syntax and ideas from other JVM languages, to see what works and what perhaps might not fit in a classic Java world. Even the processes and tools that Java uses to evolve and grow, such as the JCP and OpenJDK, are also adapting themselves to stay relevant in this constant evolution. This evolution and adaptation is part of the careful balance Java has to strike.

Focus on Readability

Java code is often readable, even for non-Java programmers. The language leans towards being more verbose rather than over-concise, which makes it easier to reason about Java code when we’re reading it. The language developers have not implemented features like operator overloading, as they feel it’s important to not be surprised by unexpected custom behaviour. There’s a tendency to avoid “magic” in the language and the frameworks – although some frameworks will use things like Convention over configuration to do things without a developer having to be imperative about it. There’s definitely been a move away from,for example, doing lots of AOP with annotations, and more towards using annotations for documentation and static analysis checks. The community and ecosystem tend to like standards and “best practice”, so Java code often follows similar sorts of rules even on very different projects.

Language Features

We’ve covered 23 Things We Like About Java but haven’t mentioned a single feature! To be honest, it’s because limiting ourselves to just 25 features seemed extremely difficult, and also because lots of the things we love about Java are not about the syntax or features. We’d like to give an honourable shout out to some of developers’ favourite features:

  • Collections API: it’s been with us a long time and served us well!
  • Convenience factory methods for collections: makes creating unmodifiable collections so much easier.
  • Streams API: a very nice addition to the collections API, and great to see it evolving even since Java 8. Parallel streams added a new way to utilise modern hardware.
  • Lambda Expressions: particularly useful with the Streams API, but very handy in its own right.
  • Optional: a nice way to express that a method might not give you something (and stops us having to protect against NullPointerExceptions!). Really nice to see each improvement to Optional since Java 8 as well.
  • java.time: the latest API for working with date and time is a welcome improvement
  • Checked exceptions: people are divided on checked vs runtime exceptions, but at least checked exceptions are there for those who wish to use them.
  • Annotations: annotations are like (among other things) documentation that the compiler can check, or notes for a framework to do some heavy lifting.
  • JShell: now we can play with Java in a REPL
  • var: type inference helps reduce code noise if used sensibly
  • Access modifiers and modularity: Java makes it easy (even more so since Java 9) to be explicit about which code can access which fields, methods, classes, and modules.
  • Switch expressions: now if we use switch it’s a lot less ugly!
  • Helpful NullPointerExceptions: who doesn’t love a good NullPointerException? Now the exceptions give developers much more useful information about what was null.
  • Preview features: we love preview features! We’re very excited about Records; Pattern matching for instanceof; and Text Blocks.

Workout Routine for Category I

The goal of category I is to work up to 16 miles per week of running. Then—and only then—you can continue on to the category II exercise. Category I is a nine-week buildup program.

Running Schedule Category I

  • Weeks 1 and 2: 2 miles per day, 8:30 pace, Monday, Wednesday and Friday (6 miles total for the week)
  • Week 3: No running as there is a high risk of stress fractures
  • Week 4: 3 miles per day,Monday, Wednesday and Friday (9 miles total for the week)
  • Week 5 and 6: Monday 2 miles, Tuesday 3 miles, Thursday 4 miles, Friday 2 miles (11 miles total for the week)
  • Weeks 7, 8, and 9: Monday 4 miles, Tuesday 4 miles, Thursday 5 miles, Friday 3 miles (16 miles total for the week)

Physical Training (PT) Schedule Category I

Perform these exercises Monday, Wednesday, and Friday

Week 1

  • Pushups: Four sets of 15 repetitions
  • Situps: Four sets of 20 repetitions
  • Pullups: Three sets of three repetitions

Week 2

  • Pushups: Five sets of 20 repetitions
  • Situps: Five sets of 20 repetitions
  • Pullups: Three sets of three repetitions

Weeks 3 and 4

  • Pushups: Five sets of 25 repetitions
  • Situps: Five sets of 25 repetitions
  • Pullups: Three sets of four repetitions

Weeks 5 and 6

  • Pushups: Six sets of 25 repetitions
  • Situps: Six sets of 25 repetitions
  • Pullups: Two sets of eight repetitions

Weeks 7 and 8

  • Pushups: Six sets of 30 repetitions
  • Situps: Six sets of 30 repetitions
  • Pullups: Two sets of 10 repetitions

Week 9

  • Pushups: Six sets of 30 repetitions
  • Situps: Six sets of 30 repetitions
  • Pullups: Three sets of 10 repetitions

For best results, alternate exercises. Do a set of pushups, then a set of situps, followed by a set of pull ups, immediately with no rest. Then progress again with the next sets of each exercise.

Swimming Schedule Category I

Sidestroke with no fins four to five days a week

  • Weeks 1 and 2: Swim continuously for 15 minutes
  • Weeks 3 and 4: Swim continuously for 20 minutes
  • Weeks 5 and 6: Swim continuously for 25 minutes
  • Weeks 7 and 8: Swim continuously for 30 minutes
  • Week 9: Swim continuously for 35 minutes

If you have no access to a pool, ride a bicycle for twice as long as you would swim. If you do have access to a pool, swim every day available. Swim four to five days a week for 200 meters in one session as your initial workup goal. Also, you want to develop your sidestroke on both the left and the right side. Try to swim 50 meters in one minute or less.

Workout Routine for Category II (Advanced Level) Navy Seals

The Navy SEALs Category II workout routine is a more intense workout designed for those who have been involved with a routine physical fitness training program or those who have completed the requirements of category I workout routine. Do not attempt this workout unless you can complete week 9 of category I workout.

Running Schedule Category II

Run the stated number of miles Monday, Tuesday, Thursday, Friday, and Saturday.

  • Weeks 1 and 2: (3/5/4/5/2) miles (19 miles per week total)
  • Weeks 3 and 4: (4/5/6/4/3) miles (22 miles per week total)
  • Week 5: (5/5/6/4/4) miles (24 miles per week total)
  • Week 6: (5/6/6/6/4) miles (27 miles per week total)
  • Week 7: (6/6/6/6/6) miles (30 miles per week total)

For weeks 8 and 9 and beyond, it is not necessary to increase the distance of the runs; work on the speed of your 6-mile runs and try to get them down to 7:30 per mile or lower. If you wish to increase the distance of your runs, do it gradually—no more than 1 mile per day increase for every week beyond week 9.

Physical Training Schedule Category II

Complete these sets and repetitions Monday, Wednesday, and Friday

Weeks 1 and 2

  • Pushups: Six sets of 30 repetitions
  • Situps: Six sets of 35 repetitions
  • Pullups: Three sets of 10 repetitions
  • Dips: Three sets of 20 repetitions

Weeks 3 and 4

  • Pushups: 10 sets of 20 repetitions
  • Situps: 10 sets of 25 repetitions
  • Pullups: Four sets of 10 repetitions
  • Dips: 10 sets of 15 repetitions

Week 5

  • Pushups: 15 sets of 20 repetitions
  • Situps: 15 sets of 25 repetitions
  • Pullups: Four sets of 12 repetitions
  • Dips: 15 sets of 15 repetitions

Week 6

  • Pushups: 20 sets of 20 repetitions
  • Situps: 20 sets of 25 repetitions
  • Pullups: Five sets of 12 repetitions
  • Dips: 20 sets of 15 repetitions

These workouts are designed for long-distance muscle endurance. Muscle fatigue will gradually take a longer and longer time to develop doing high repetition workouts. For best results, alternate exercises each set, in order to rest that muscle group for a short time.

Pyramid Workouts

After you have reached your Category I and II standards, you can do a pyramid workout with any exercise to vary your workout. The object is to slowly build up to a goal, then build back down to the beginning of the workout. For instance, pullups, situps, pushups, and dips can be alternated as in the above workouts, but this time choose a number to be your goal and build up to that number. Each number counts as a set. Work your way up and down the pyramid.

For example, if your goal is five repetitons, the number of repetitions you would do for each exercise would be:

  • Pullups: 1,2,3,4,5,4,3,2,1
  • Pushups: 2,4,6,8,10,8,6,4,2 (two times the number of pullups)
  • Situps: 3,6,9,12,15,12,9,6,3 (three times the number of pullups)
  • Dips: Same as pushups

Swimming Workouts Category II

Swim four to five days per week

  • Weeks 1 and 2: Swim continuously for 35 minutes.
  • Weeks 3 and 4: Swim continuously for 45 minutes with fins.
  • Week 5: Swim continuously for 60 minutes with fins.
  • Week 6: Swim continuously for 75 minutes with fins.

At first, to reduce initial stress on your foot muscles when starting with fins, alternate swimming 1000 meters with fins and 1000 meters without them. Your goal should be to swim 50 meters in 45 seconds or less.

Stretching and Physical Training
Since Monday, Wednesday, and Friday are devoted to PT, it is wise to devote at least 20 minutes on Tuesday, Thursday, and Saturday to stretching. You can stretch for 15 minutes before a workout, after warming up, stretch after a workout, or do stretching as its own separate activity. A good way to do stretching is to start at the top and go to the bottom. Stretch to tightness, not to pain; hold for 10 to 15 seconds. Do not bounce. Stretch every muscle in your body from the neck to the calves, concentrating on your thighs, hamstrings, chest, back, and shoulders.

作者是书籍质量的一个主要保证。《人月神话》的作者:Frederick Phillips Brooks(以下简称 Brooks)。这位老兄最牛X的成就是在60年代(那时他才【29岁】)主持并完成了一个同样很牛X的IBM 360系统的开发。
  IBM 360后来被誉为是人类从原子能时代进入信息时代的标志。该项目不光具有历史意义,而且在软件工程方面非常有代表性(因为其规模和复杂度)。为了给大伙儿加深印象,列举该项目的几个数据如下:
--------------------------------
软件人员总数  2000  四十年后,微软的Windows 2003团队也就5000人
软件总费用   5亿$  发明第一个原子弹的曼哈顿工程也不过才花20亿$
开发周期    4年
--------------------------------
  注意,上述仅仅是软件方面的统计。

  最终,IBM 360项目并没有完成全部的预定目标,但是对于这个史无前例的项目,居然没有中途夭折,本身已经算是奇迹了。后来,Brooks 在1975年(距今已30多年)把他所写的一些软件工程方面的随笔(很多都与 IBM 的360项目有关)整理出版,也就是我们今天点评的《人月神话》。

★本书的结构

  前面已经说了,Brooks 当年是把他写过的一些随笔整理出书的,所以书中的各个章节相对来说比较独立。因此你不一定按照排版的顺序来阅读。比如俺每次重读这本书都只是挑选其中一两个章节来看。

★本书的看点

  虽然本书的每个章节都称得上是经典,但限于篇幅,只把俺印象最深刻的几章介绍一下。

◇第2章 关于【人月】的误导性

  这是本书最有名气的章节。在本章,Brooks明确反对使用“人月”这个极具欺骗性的度量单位。因为“人月”这个称谓暗示着“人”和“月”是可以互换的。
  即使到今天为止,还是有大量的编程人员、测试人员、项目经理和软件公司老板在【错误地】使用“人月”来衡量软件开发的工作量,实际上,当某人宣称某工作量是6个人月时,这句话本身是没有太大意义的。一般来说,1个人干6个月的工作,6个人在1个月内几乎很难完成。所以俺在沟通工作量时,都会明确地讲清楚,需要几个人干几个月。
  另外,Brooks 根据人月的不可互换推导出一个怪论:向进度落后的项目增加人手会导致项目更加落后。这个怪论是如此出名,以至于后来被称为“Brooks 法则”。这个法则蛮有用滴,每当有上级领导企图通过增加人手来赶进度时(往往在项目后期),俺都会搬出这个法则来拒绝这种企图。

◇第3章 关于团队的组成

  为了解决前几章中提到的大型团队的种种困难,Brooks 提出了一种新的解决方案:把大型团队拆分为若干个类似于外科手术式的小团队。
  每个小团队有一名主程序员(类似于主刀医生),所有的问题分解和功能定义都通过主程序员来完成,以此来降低沟通成本。并且,每个主程序员配备若干个平庸的人帮他/她打下手,也很符合现实情况(还记得“二八原理系列”中提到的优秀人员和平庸人员的比例吗?)。具体的角色职责我就不细说了,书上都有。

◇第16、17章 关于【没有银弹】的真知灼见

  实际上第16章“没有银弹”的内容来自于作者在1986年作的报告,后来才加入书中。第17章“再论没有银弹”是20周年版加入的。
  据作者在本书的“20周年纪念版”中宣称,“没有银弹”是引发最多争议的章节。不过我个人认为:虽然引发最多争议,但是这两章却是全书最重要、最深刻且最有价值的章节。即使你从事的工作和软件工程无关,你也应该认真阅读它。
  Brooks 在第16章分析了软件开发的【根本性困难】(复杂性、非一致性、易变性和不可见性)和【次要性困难】。分析完根本性困难和次要性困难之后,作者断言:未来十年内,【不可能】有某种技术突破(银弹)能够彻底解决“根本性困难”,从而导致软件开发效率有数量级的提高。
  现在,时间已经过去了远远不止十年。在“没有银弹”发表之后,软件界冒出了数不清的新玩意儿(比如面向对象、组件技术、设计模式、CMM、UML、敏捷开发、RAD、等等),很多新玩意儿的创造者都号称他们发明了银弹。但实际上没有哪个新技术能够经受住时间的考验并真正获得银弹的称号。

★俺的建议

  啰嗦了这么多,最后来说说俺的几点建议:

  1. 如果你从来没有看过本书,那赶紧去找一本来,并全部读一遍(不一定要按顺序看)。
  2. 如果你以前看的是老版本,那赶紧去找来新版(20周年纪念版),并重点看看增补的4个章节。
  3. 如果你已经把新版全部看完,今后可以考虑定期(例如每隔一两年)再拿出来翻一翻。

What is Python?

Python is a high-level, interpreted, interactive and object-oriented scripting language. Python is designed to be highly readable. It uses English keywords frequently where as other languages use punctuation, and it has fewer syntactical constructions than other languages.

Name some of the features of Python.

Following are some of the salient features of python −

  • It supports functional and structured programming methods as well as OOP.
  • It can be used as a scripting language or can be compiled to byte-code for building large applications.
  • It provides very high-level dynamic data types and supports dynamic type checking.
  • It supports automatic garbage collection.
  • It can be easily integrated with C, C++, COM, ActiveX, CORBA, and Java.

What is the purpose of PYTHONPATH environment variable?

PYTHONPATH - It has a role similar to PATH. This variable tells the Python interpreter where to locate the module files imported into a program. It should include the Python source library directory and the directories containing Python source code. PYTHONPATH is sometimes preset by the Python installer.

What is the purpose of PYTHONSTARTUP environment variable?

PYTHONSTARTUP - It contains the path of an initialization file containing Python source code. It is executed every time you start the interpreter. It is named as .pythonrc.py in Unix and it contains commands that load utilities or modify PYTHONPATH.

What is the purpose of PYTHONCASEOK environment variable?

PYTHONCASEOK − It is used in Windows to instruct Python to find the first case-insensitive match in an import statement. Set this variable to any value to activate it.

What is the purpose of PYTHONHOME environment variable?

PYTHONHOME − It is an alternative module search path. It is usually embedded in the PYTHONSTARTUP or PYTHONPATH directories to make switching module libraries easy.

Is python a case sensitive language?

Yes! Python is a case sensitive programming language.

What are the supported data types in Python?

Python has five standard data types −

  • Numbers
  • String
  • List
  • Tuple
  • Dictionary

What is the output of print str if str = ‘Hello World!’?

It will print complete string. Output would be Hello World!.

What is the output of print str[0] if str = ‘Hello World!’?

It will print first character of the string. Output would be H.

What is the output of print str[2:5] if str = ‘Hello World!’?

It will print characters starting from 3rd to 5th. Output would be llo.

What is the output of print str[2:] if str = ‘Hello World!’?

It will print characters starting from 3rd character. Output would be llo World!.

What is the output of print str * 2 if str = ‘Hello World!’?

It will print string two times. Output would be Hello World!Hello World!.

What is the output of print str + “TEST” if str = ‘Hello World!’?

It will print concatenated string. Output would be Hello World!TEST.

What is the output of print list if list = [ ‘abcd’, 786 , 2.23, ‘john’, 70.2 ]?

It will print complete list. Output would be [‘abcd’, 786, 2.23, ‘john’, 70.200000000000003].

What is the output of print list[0] if list = [ ‘abcd’, 786 , 2.23, ‘john’, 70.2 ]?

It will print first element of the list. Output would be abcd.

What is the output of print list[1:3] if list = [ ‘abcd’, 786 , 2.23, ‘john’, 70.2 ]?

It will print elements starting from 2nd till 3rd. Output would be [786, 2.23].

What is the output of print list[2:] if list = [ ‘abcd’, 786 , 2.23, ‘john’, 70.2 ]?

It will print elements starting from 3rd element. Output would be [2.23, ‘john’, 70.200000000000003].

What is the output of print tinylist * 2 if tinylist = [123, ‘john’]?

It will print list two times. Output would be [123, ‘john’, 123, ‘john’].

What is the output of print list1 + list2, if list1 = [ ‘abcd’, 786 , 2.23, ‘john’, 70.2 ] and ist2 = [123, ‘john’]?

It will print concatenated lists. Output would be [‘abcd’, 786, 2.23, ‘john’, 70.2, 123, ‘john’]

What are tuples in Python?

A tuple is another sequence data type that is similar to the list. A tuple consists of a number of values separated by commas. Unlike lists, however, tuples are enclosed within parentheses.

What is the difference between tuples and lists in Python?

The main differences between lists and tuples are − Lists are enclosed in brackets ( [ ] ) and their elements and size can be changed, while tuples are enclosed in parentheses ( ( ) ) and cannot be updated. Tuples can be thought of as read-only lists.

What is the output of print tuple if tuple = ( ‘abcd’, 786 , 2.23, ‘john’, 70.2 )?

It will print complete tuple. Output would be (‘abcd’, 786, 2.23, ‘john’, 70.200000000000003).

What is the output of print tuple[0] if tuple = ( ‘abcd’, 786 , 2.23, ‘john’, 70.2 )?

It will print first element of the tuple. Output would be abcd.

What is the output of print tuple[1:3] if tuple = ( ‘abcd’, 786 , 2.23, ‘john’, 70.2 )?

It will print elements starting from 2nd till 3rd. Output would be (786, 2.23).

What is the output of print tuple[2:] if tuple = ( ‘abcd’, 786 , 2.23, ‘john’, 70.2 )?

It will print elements starting from 3rd element. Output would be (2.23, ‘john’, 70.200000000000003).

What is the output of print tinytuple * 2 if tinytuple = (123, ‘john’)?

It will print tuple two times. Output would be (123, ‘john’, 123, ‘john’).

What is the output of print tuple + tinytuple if tuple = ( ‘abcd’, 786 , 2.23, ‘john’, 70.2 ) and tinytuple = (123, ‘john’)?

It will print concatenated tuples. Output would be (‘abcd’, 786, 2.23, ‘john’, 70.200000000000003, 123, ‘john’).

What are Python’s dictionaries?

Python’s dictionaries are kind of hash table type. They work like associative arrays or hashes found in Perl and consist of key-value pairs. A dictionary key can be almost any Python type, but are usually numbers or strings. Values, on the other hand, can be any arbitrary Python object.

How will you create a dictionary in python?

Dictionaries are enclosed by curly braces ({ }) and values can be assigned and accessed using square braces ([]).

1
2
3
4
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

How will you get all the keys from the dictionary?

Using dictionary.keys() function, we can get all the keys from the dictionary object.

1
print dict.keys()   # Prints all the keys

How will you get all the values from the dictionary?

Using dictionary.values() function, we can get all the values from the dictionary object.

1
print dict.values()   # Prints all the values

How will you convert a string to an int in python?

int(x [,base]) - Converts x to an integer. base specifies the base if x is a string.

How will you convert a string to a long in python?

long(x [,base] ) - Converts x to a long integer. base specifies the base if x is a string.

How will you convert a string to a float in python?

float(x) − Converts x to a floating-point number.

How will you convert a object to a string in python?

str(x) − Converts object x to a string representation.

How will you convert a object to a regular expression in python?

repr(x) − Converts object x to an expression string.

How will you convert a String to an object in python?

eval(str) − Evaluates a string and returns an object.

How will you convert a string to a tuple in python?

tuple(s) − Converts s to a tuple.

How will you convert a string to a list in python?

list(s) − Converts s to a list.

How will you convert a string to a set in python?

set(s) − Converts s to a set.

How will you create a dictionary using tuples in python?

dict(d) − Creates a dictionary. d must be a sequence of (key,value) tuples.

How will you convert a string to a frozen set in python?

frozenset(s) − Converts s to a frozen set.

How will you convert an integer to a character in python?

chr(x) − Converts an integer to a character.

How will you convert an integer to an unicode character in python?

unichr(x) − Converts an integer to a Unicode character.

How will you convert a single character to its integer value in python?

ord(x) − Converts a single character to its integer value.

How will you convert an integer to hexadecimal string in python?

hex(x) − Converts an integer to a hexadecimal string.

How will you convert an integer to octal string in python?

oct(x) − Converts an integer to an octal string.

What is the purpose of ** operator?

** Exponent − Performs exponential (power) calculation on operators. a**b = 10 to the power 20 if a = 10 and b = 20.

What is the purpose of // operator?

// Floor Division − The division of operands where the result is the quotient in which the digits after the decimal point are removed.

What is the purpose of is operator?

is − Evaluates to true if the variables on either side of the operator point to the same object and false otherwise. x is y, here is results in 1 if id(x) equals id(y).

What is the purpose of not in operator?

not in − Evaluates to true if it does not finds a variable in the specified sequence and false otherwise. x not in y, here not in results in a 1 if x is not a member of sequence y.

What is the purpose break statement in python?

break statement − Terminates the loop statement and transfers execution to the statement immediately following the loop.

What is the purpose continue statement in python?

continue statement − Causes the loop to skip the remainder of its body and immediately retest its condition prior to reiterating.

What is the purpose pass statement in python?

pass statement − The pass statement in Python is used when a statement is required syntactically but you do not want any command or code to execute.

How can you pick a random item from a list or tuple?

choice(seq) − Returns a random item from a list, tuple, or string.

How can you pick a random item from a range?

randrange ([start,] stop [,step]) − returns a randomly selected element from range(start, stop, step).

How can you get a random number in python?

random() − returns a random float r, such that 0 is less than or equal to r and r is less than 1.

How will you set the starting value in generating random numbers?

seed([x]) − Sets the integer starting value used in generating random numbers. Call this function before calling any other random module function. Returns None.

How will you randomizes the items of a list in place?

shuffle(lst) − Randomizes the items of a list in place. Returns None.

How will you capitalizes first letter of string?

capitalize() − Capitalizes first letter of string.

How will you check in a string that all characters are alphanumeric?

isalnum() − Returns true if string has at least 1 character and all characters are alphanumeric and false otherwise.

How will you check in a string that all characters are digits?

isdigit() − Returns true if string contains only digits and false otherwise.

How will you check in a string that all characters are in lowercase?

islower() − Returns true if string has at least 1 cased character and all cased characters are in lowercase and false otherwise.

How will you check in a string that all characters are numerics?

isnumeric() − Returns true if a unicode string contains only numeric characters and false otherwise.

How will you check in a string that all characters are whitespaces?

isspace() − Returns true if string contains only whitespace characters and false otherwise.

How will you check in a string that it is properly titlecased?

istitle() − Returns true if string is properly “titlecased” and false otherwise.

How will you check in a string that all characters are in uppercase?

isupper() − Returns true if string has at least one cased character and all cased characters are in uppercase and false otherwise.

How will you merge elements in a sequence?

join(seq) − Merges (concatenates) the string representations of elements in sequence seq into a string, with separator string.

How will you get the length of the string?

len(string) − Returns the length of the string.

How will you get a space-padded string with the original string left-justified to a total of width columns?

ljust(width[, fillchar]) − Returns a space-padded string with the original string left-justified to a total of width columns.

How will you convert a string to all lowercase?

lower() − Converts all uppercase letters in string to lowercase.

How will you remove all leading whitespace in string?

lstrip() − Removes all leading whitespace in string.

How will you get the max alphabetical character from the string?

max(str) − Returns the max alphabetical character from the string str.

How will you get the min alphabetical character from the string?

min(str) − Returns the min alphabetical character from the string str.

How will you replaces all occurrences of old substring in string with new string?

replace(old, new [, max]) − Replaces all occurrences of old in string with new or at most max occurrences if max given.

How will you remove all leading and trailing whitespace in string?

strip([chars]) − Performs both lstrip() and rstrip() on string.

How will you change case for all letters in string?

swapcase() − Inverts case for all letters in string.

How will you get titlecased version of string?

title() − Returns “titlecased” version of string, that is, all words begin with uppercase and the rest are lowercase.

How will you convert a string to all uppercase?

upper() − Converts all lowercase letters in string to uppercase.

How will you check in a string that all characters are decimal?

isdecimal() − Returns true if a unicode string contains only decimal characters and false otherwise.

What is the difference between del() and remove() methods of list?

To remove a list element, you can use either the del statement if you know exactly which element(s) you are deleting or the remove() method if you do not know.

What is the output of len([1, 2, 3])?

3.

What is the output of [1, 2, 3] + [4, 5, 6]?

[1, 2, 3, 4, 5, 6]

What is the output of [‘Hi!’] * 4?

[‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’]

What is the output of 3 in [1, 2, 3]?

True

What is the output of for x in [1, 2, 3]: print x?

1
2
3
1
2
3

What is the output of L[2] if L = [1,2,3]?

3, Offsets start at zero.

What is the output of L[-2] if L = [1,2,3]?

1, Negative: count from the right.

What is the output of L[1:] if L = [1,2,3]?

2, 3, Slicing fetches sections.

How will you compare two lists?

cmp(list1, list2) − Compares elements of both lists.

How will you get the length of a list?

len(list) − Gives the total length of the list.

How will you get the max valued item of a list?

max(list) − Returns item from the list with max value.

How will you get the min valued item of a list?

min(list) − Returns item from the list with min value.

How will you get the index of an object in a list?

list.index(obj) − Returns the lowest index in list that obj appears.

How will you insert an object at given index in a list?

list.insert(index, obj) − Inserts object obj into list at offset index.

How will you remove last object from a list?

list.pop(obj=list[-1]) − Removes and returns last object or obj from list.

How will you remove an object from a list?

list.remove(obj) − Removes object obj from list.

How will you reverse a list?

list.reverse() − Reverses objects of list in place.

How will you sort a list?

list.sort([func]) − Sorts objects of list, use compare func if given.

What is lambda function in python?

‘lambda’ is a keyword in python which creates an anonymous function. Lambda does not contain block of statements. It does not contain return statements.

What we call a function which is incomplete version of a function?

Stub.

When a function is defined then the system stores parameters and local variables in an area of memory. What this memory is known as?

Stack.

A canvas can have a foreground color? (Yes/No)

Yes.

Is Python platform independent?

No

There are some modules and functions in python that can only run on certain platforms.

Do you think Python has a complier?

Yes

Yes it has a complier which works automatically so we don’t notice the compiler of python.

What are the applications of Python?

  1. Django (Web framework of Python).

  2. Micro Frame work such as Flask and Bottle.

  3. Plone and Django CMS for advanced content Management.

What is the basic difference between Python version 2 and Python version 3?

Table below explains the difference between Python version 2 and Python version 3.

S.No Section Python Version2 Python Version3
1. Print Function Print command can be used without parentheses. Python 3 needs parentheses to print any string. It will raise error without parentheses.
2. Unicode ASCII str() types and separate Unicode() but there is no byte type code in Python 2. Unicode (utf-8) and it has two byte classes −ByteBytearray S.
3. Exceptions Python 2 accepts both new and old notations of syntax. Python 3 raises a SyntaxError in turn when we don’t enclose the exception argument in parentheses.
4. Comparing Unorderable It does not raise any error. It raises ‘TypeError’ as warning if we try to compare unorderable types.

Which programming Language is an implementation of Python programming language designed to run on Java Platform?

Jython

(Jython is successor of Jpython.)

Is there any double data type in Python?

No

Is String in Python are immutable? (Yes/No)

Yes.

Can True = False be possible in Python?

No.

OS.

When does a new block begin in python?

A block begins when the line is intended by 4 spaces.

Write a function in python which detects whether the given two strings are anagrams or not.

1
2
3
4
5
6
7
8
def check(a,b):
if(len(a)!=len(b)):
return False
else:
if(sorted(list(a)) == sorted(list(b))):
return True
else:
return False

Name the python Library used for Machine learning.

Scikit-learn python Library used for Machine learning

What does pass operation do?

Pass indicates that nothing is to be done i.e. it signifies a no operation.

Name the tools which python uses to find bugs (if any).

Pylint and pychecker.

Write a function to give the sum of all the numbers in list?

Sample list − (100, 200, 300, 400, 0, 500)

Expected output − 1500

Program for sum of all the numbers in list is −

1
2
3
4
5
6
def sum(numbers):
total = 0
for num in numbers:
total+=num
print(''Sum of the numbers: '', total)
sum((100, 200, 300, 400, 0, 500))

We define a function ‘sum’ with numbers as parameter. The in for loop we store the sum of all the values of list.

Write a program in Python to reverse a string without using inbuilt function reverse string?

Program to reverse a string in given below −

1
2
3
4
5
6
7
8
9
10
def string_reverse(str1):

rev_str = ' '
index = len(str1) #defining index as length of string.
while(index>0):
rev_str = rev_str + str1[index-1]
index = index-1
return(rev_str)

print(string_reverse('1tniop'))

First we declare a variable to store the reverse string. Then using while loop and indexing of string (index is calculated by string length) we reverse the string. While loop starts when index is greater than zero. Index is reduced to value 1 each time. When index reaches zero we obtain the reverse of string.

Write a program to test whether the number is in the defined range or not?

Program is −

1
2
3
4
5
def test_range(num):
if num in range(0, 101):
print(''%s is in range''%str(num))
else:
print(''%s is not in range''%str(num))

Output −

test_range(101)

101 is not in the range

To test any number in a particular range we make use of the method ‘if..in’ and else condition.

Write a program to calculate number of upper case letters and number of lower case letters?

Test on String: ‘’Tutorials POINT’’

Program is −

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def string_test(s):

a = { ''Lower_Case'':0 , ''Upper_Case'':0} #intiail count of lower and upper
for ch in s: #for loop
if(ch.islower()): #if-elif-else condition
a[''Lower_Case''] = a[''Lower_Case''] + 1
elif(ch.isupper()):
a[''Upper_Case''] = a [''Upper_Case''] + 1
else:
pass

print(''String in testing is: '',s) #printing the statements.
print(''Number of Lower Case characters in String: '',a[''Lower_Case''])
print(''Number of Upper Case characters in String: '',a[''Upper_Case''])

Output −

string_test(‘’Tutorials POINT’’)

String in testing is: Tutorials POINT

Number of Lower Case characters in String: 8

Number of Upper Case characters in String: 6

We make use of the methods .islower() and .isupper(). We initialise the count for lower and upper. Using if and else condition we calculate total number of lower and upper case characters.